|
|
| Line 1: |
Line 1: |
| A method to obtain single patient record from VistA - Thanks to [http://mail.google.com/mail/#label/hardhats-HMS/123bfb854f948072/ Alan] for the solution.
| | FINISHED PROGRAM FOR RETRIEVING ONE PATIENT DATA METHOD #1: |
| | |
| --------------------------------------------------------------------------------
| |
| | |
| | |
| | |
| Here is the full documentation of the very basic starter program for
| |
| selecting one patient's file and printing their name and ssn.
| |
| About five VistA routines are included for reference.
| |
| | |
| <pre>
| |
| ===================================================
| |
|
| |
|
| | ============================================================== |
|
| |
|
| USER>D ^%CD | | USER>D ^%CD |
| Line 32: |
Line 22: |
| VISTA> | | VISTA> |
|
| |
|
| VISTA>D ^NAM3SSN | | VISTA>D ^NAM5SSN |
| | |
| | =========================================== |
| | VISTA SELECT PATIENT PROCEDURE: |
| | =========================================== |
|
| |
|
| Select PATIENT NAME: ONE | | Select PATIENT NAME: ONE |
| 1 ONE,IMAGEPATIENT 4-15-53 666061001 NO NSC
| | 1 ONE,IMAGEPATIENT 4-15-53 666061001 NO NSC |
| VETERAN | | VETERAN |
|
| |
|
| 2 ONE,INPATIENT 3-9-45 666000801 NO NSC VETERAN
| | 2 ONE,INPATIENT 3-9-45 666000801 NO NSC VETERAN |
|
| |
|
| 3 ONE,OUTPATIENT 3-9-45 666000601 NO NSC
| | 3 ONE,OUTPATIENT 3-9-45 666000601 NO NSC |
| VETERAN | | VETERAN |
|
| |
|
| 4 ONE,PATIENT 4-7-35 666000001 YES SC VETERAN
| | 4 ONE,PATIENT 4-7-35 666000001 YES SC VETERAN |
|
| |
|
| 5 ONEHUNDRED,INPATIENT 3-9-45 666000900 NO NSC
| | 5 ONEHUNDRED,INPATIENT 3-9-45 666000900 NO NSC |
| VETERAN | | VETERAN |
|
| |
|
| Line 54: |
Line 48: |
| Enrollment Priority: GROUP 3 Category: IN PROCESS End Date: | | Enrollment Priority: GROUP 3 Category: IN PROCESS End Date: |
|
| |
|
| | =========================================== |
| | |
| | NAME5SSN SELECTED PATIENT DATA: |
| | =========================================== |
| | |
| | Name: ONE,PATIENT SSN: 666000001 |
| | SEX: M DOB: 03/12/8276 ADDRESS: 1312 Ashton Place |
| | CITY: Rowling STATE: WEST VIRGINIA ZIP: 99998 |
| | PHONE: 222-555-8235 |
|
| |
|
| Name: ONE,PATIENT SSN: 666000001
| | =========================================== |
|
| |
|
| VISTA> | | VISTA> |
| | ======================================================================== |
|
| |
|
| | OUTPUT.TXT: |
| | ================ |
| | Name^ONE,PATIENT^SSN^666000001^SEX^M^DOB^03/12/8276^ADDRESS^1312 |
| | Ashton Place^CITY^Rowling^STATE^WEST |
| | VIRGINIA^ZIP^99998PHONE^222-555-8235^ |
| | ======================================================================== |
|
| |
|
| NAM3SSN ; Lab 9; TEST VISTA SELECT PATIENT NAME: W NAME & SSN; AHR;
| | NAM5SSN ; Lab 9 M1; VISTA SELECT PATIENT NAME: W NAME & SSN; AHR; |
| 09/14/2009 | | 09/28/2009 |
| ;
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ; FROM:
| | ; |
| ; DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY ;23 AUG 00 ;
| | ; Setting up a VistA environment |
| ; 5.3;Registration;**343**,Aug 13, 1993
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ;
| | ;USER>D ^%CD |
| EN ;Entry point
| | ; |
| ;
| | ; Namespace: VISTA |
| N DGDFN,DGPAT,DGNAM,DGSSN
| | ; You're in namespace VISTA |
| I DTIME="" S DTIME=30 ; added 1 line; TIMEOUT 4 READ set if ^XUP not
| | ; Default directory is c:\cachesys\mgr\vista\ |
| run
| |
| S DGDFN=$$GETDFN()
| |
| Q:DGDFN'>0
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;Searching for GETDFN() in *.*
| |
| ;
| |
| ; ALL THREE EXAMPLES OF GETDFN() ARE INCLUDED FOR REFERENCE
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;DGPHIST.int(9): S DGDFN=$$GETDFN()
| |
| ;DGPHIST.int(22): GETDFN() ;Ask the user to select patient
| |
| ;EASECPC.int(36): GETDFN() ; Get the veteran's DFN
| |
| ;NAM3SSN.int(11): S DGDFN=$$GETDFN()
| |
| ;NAM3SSN.int(30): ; THIS NEXT GETDFN() NOT IN USE INCLUDED FOR
| |
| REFERENCE
| |
| ;NAM3SSN.int(36): ;GETDFN() ;Ask the user to select patient
| |
| ;NAM3SSN.int(54): GETDFN() ;Get pointer to PATIENT file (#2)
| |
| ;NAM3SSN.mac(11): S DGDFN=$$GETDFN()
| |
| ;NAM3SSN.mac(30): ; THIS NEXT GETDFN() NOT IN USE INCLUDED FOR
| |
| REFERENCE
| |
| ;NAM3SSN.mac(36): ;GETDFN() ;Ask the user to select patient
| |
| ;NAM3SSN.mac(54): GETDFN() ;Get pointer to PATIENT file (#2)
| |
| ;VAFCMS01.int(10): S DFN=$$GETDFN()
| |
| ;VAFCMS01.int(18): GETDFN() ;Get pointer to PATIENT file (#2)
| |
| ;VAFCMS01.int(225): S DFN=$$GETDFN()
| |
| ;Found 14 occurrence/s in 5 file/s.
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ; --->>> taking out the $$GETPAT(DGDFN) code because it is not
| |
| simple.
| |
| ;
| |
| ;S DGPAT=$$GETPAT(DGDFN)
| |
| ;Q:$P(DGPAT,U)=""
| |
| ;S DGNAM=$P(DGPAT,U),DGSSN=$P(DGPAT,U,2)
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| S DGNAM=$$NAME(DGDFN)
| |
| ;
| |
| S DGSSN=$$SSN(DGDFN)
| |
| ;
| |
| W !!,"Name: ",DGNAM," ","SSN: ",DGSSN,! ; Only line I have written
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; THIS CODE IS BEING USED
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ; FROM:
| |
| ; DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY
| |
| ;23 AUG 00 ;;5.3;Registration;**343**,Aug 13, 1993
| |
| ;
| |
| ; this code commented out for reference to the entry point above.
| |
| GETDFN() ;Ask the user to select patient
| |
| ;
| |
| ; Input: none
| |
| ;
| |
| ; Output: DFN
| |
| ;
| |
| N DIC,X,Y
| |
| S DIC="^DPT(",DIC(0)="AEMQ"
| |
| D ^DIC
| |
| Q $S(+Y>0:+Y,1:0)
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ; FROM:
| |
| ; VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998 ;
| |
| ; 5.3;Registration;**209**;Aug 13, 1993
| |
| ;
| |
| ; THIS NEXT GETDFN() NOT IN USE INCLUDED FOR REFERENCE
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; GETDFN() ;Get pointer to PATIENT file (#2)
| |
| ; Input : None
| |
| ;Output : DFN - Pointer to PATIENT file (#2)
| |
| ; -1 - No entry selected
| |
| ;
| |
| ; N DIC,X,Y,DTOUT,DUOUT
| |
| ; S DIC="^DPT("
| |
| ; S DIC(0)="AEMNQZ"
| |
| ; D ^DIC
| |
| ; Q +Y
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ;EASECPC ;ALB/PHH,CKN,LBD,AMA,SCK - LTC Copayment Report; 29-AUG-2001
| |
| ;;1.0;ENROLLMENT APPLICATION SYSTEM;**5,7,19,24,34,40,79**;Mar 15,
| |
| 2001;Build 3
| |
| ;
| |
| ; This routine prints a report of calculated LTC copayments for a
| |
| veteran.
| |
| ; It is called by menu option EASEC LTC COPAY PRINT
| |
| ;
| |
| ; EN N DFN,EASRPT,EASADM,EASRDT,MAXRT,DGMTI,DGMTDT
| |
| ; Select which report to print (1=Institutional (IP); 2=Non-
| |
| Institutional (OP))
| |
| ; S EASRPT=$$RPT Q:'EASRPT
| |
| ; Select Patient
| |
| ; S DFN=$$GETDFN Q:'DFN
| |
| ; S EASADM=""
| |
| ; Get the LTC admission date (if EASRPT=1)
| |
| ; I EASRPT=1 S EASADM=$$ADMDT Q:'EASADM
| |
| ; E S EASADM="" ;EAS*1.0*79
| |
| ; Get start date for report
| |
| ; S EASRDT=$$RPTDT Q:'EASRDT
| |
| ;EAS*1.0*79 - moved from 4 lines up, and added EASADM as a parameter
| |
| ;Set EASADM to the report date for Non-Institutional (OP) reports
| |
| ; I EASRPT=2 S EASADM=EASRDT
| |
| ; Get most recent LTC Copay Test for patient and set up LTC variables
| |
| ; I '$$GETLTC(DFN,EASADM) Q
| |
| ; Run the report
| |
| ; D QUE
| |
| ; Q
| |
| ; RPT() ; Select which report to print
| |
| ; Input: None
| |
| ; Output: Y - Report Type (1=Institutional (IP); 2=Non-Institutional
| |
| (OP); 0=Quit)
| |
| ; N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
| |
| ; W !!,"Report of Calculated Long Term Care Copayments"
| |
| ; W !,"=============================================="
| |
| ; S DIR(0)="S^1:Institutional (Inpatient);2:Non-Institutional
| |
| (Outpatient)"
| |
| ; S DIR("A")="Enter 1 or 2"
| |
| ; D ^DIR I 'Y!($D(DTOUT))!($D(DUOUT)) Q 0
| |
| ; Q Y
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ; GETDFN() ; Get the veteran's DFN
| |
| ; N DIC,DTOUT,DUOUT,X,Y
| |
| ; W !
| |
| ; S DIC="^DPT(",DIC(0)="AEMZQ",DIC("S")="I $D(^DGMT(408.31,""AID"",
| |
| 3,+Y))"
| |
| ; D ^DIC
| |
| ; Q:$D(DTOUT)!($D(DUOUT)) 0
| |
| ; Q:Y<0 0
| |
| ; Q +Y
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; MORE ROUTINE ....
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; FROM:
| |
| ; DGENPTA ;ALB/CJM - Patient API - Retrieve Data; 13 JUN 1997
| |
| ;;5.3;Registration;**121,122,147**;08/13/93
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| SSN(DFN) ;
| |
| ;Description: Function returns the patient's SSN, or "" on failure.
| |
| ;
| |
| Q:'DFN ""
| |
| Q $P($G(^DPT(DFN,0)),"^",9)
| |
| ;
| |
| NAME(DFN) ;
| |
| ;Description: Function returns the patient's NAME, or "" on failure.
| |
| ;
| |
| Q:'DFN ""
| |
| Q $P($G(^DPT(DFN,0)),"^")
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| QUIT ; END NAM2SSN
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| QUIT ; MAKE SURE ENDING HERE
| |
| ;
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ;GETPAT(DFN) ;
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;Searching for GETPAT(DFN) in *.*
| |
| ;
| |
| ;DGPHIST.int(33): GETPAT(DFN) ; get patient name and ssn
| |
| ;NAM3SSN.int(89): ;GETPAT(DFN) ;
| |
| ;NAM3SSN.int(106): ; EXTERNAL PROCEDURE USED BY GETPAT(DFN) INCLUDED
| |
| FOR REFERENCE
| |
| ;NAM3SSN.mac(89): ;GETPAT(DFN) ;
| |
| ;NAM3SSN.mac(106): ; EXTERNAL PROCEDURE USED BY GETPAT(DFN) INCLUDED
| |
| FOR REFERENCE
| |
| ;PSOTPCLP.int(130): D GETPAT(DFN)
| |
| ;PSOTPCLP.int(148): GETPAT(DFN) ;GET PATIENT DATA
| |
| ;Found 7 occurrence/s in 4 file/s.
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; Input: DFN - patient IEN
| |
| ;
| |
| ; Output:
| |
| ; Function value: patient name^SSN
| |
| ;
| |
| ;N VADM,DGNAM,DGSSN
| |
| ;S (DGNAM,DGSSN)=""
| |
| ;I $G(DFN)>0 D
| |
| ;. D ^VADPT ; CALLS THIS EXTERNAL PROCEDURE
| |
| ;. S DGNAM=VADM(1)
| |
| ;. S DGSSN=$P(VADM(2),U,2)
| |
| ;Q DGNAM_"^"_DGSSN
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; EXTERNAL PROCEDURE USED BY GETPAT(DFN) INCLUDED FOR REFERENCE
| |
| ;
| |
| ;VADPT ;ALB/MRL/MJK - RETURN PATIENT VARIABLE ARRAYS [DRIVER];07 DEC
| |
| 1988
| |
| ;;5.3;Registration;**193,343,389,415,489,498**;Aug 13, 1993
| |
| ;DFN = Patient IFN [if not passed entire array returned as null]
| |
| ;
| |
| ;DEM ;Demographic Variables
| |
| ;S VAN=1,VAN(1)=12,VAV="VADM" D ^VADPT0 Q
| |
| ;
| |
| ;OPD ;Other Patient Data
| |
| ;S VAN=2,VAN(1)=7,VAV="VAPD" D ^VADPT0 Q
| |
| ;
| |
| ;ADD ;Current Address
| |
| ;S VAN=3,VAN(1)=22,VAV="VAPA" D ^VADPT0 Q
| |
| ;
| |
| ;OAD ;Other Patient Variables
| |
| ;S VAN=4,VAN(1)=11,VAV="VAOA" D ^VADPT0 Q
| |
| ;
| |
| ;INP ;Inpatient Data [pre-version 5]
| |
| ;N VAINDTT S VAN=5,VAN(1)=11,VAV="VAIN",VAINDTT=$G(VAINDT) N VAINDT
| |
| S:VAINDTT VAINDT=$$DATIM(VAINDTT) D ^VADPT0 Q
| |
| ;
| |
| ;IN5 ;Inpatient Data [v5.0 and above]
| |
| ;N VAINDTT S VAN=6,VAN(1)=19,VAV=$S('$D(VAIP("V")):"VAIP",VAIP("V")'?
| |
| 1A.E:"VAIP",1:VAIP("V")),VAINDTT=$G(VAIP("D")) S:$L(VAINDTT) VAIP("D")
| |
| | |
| =VAINDTT S:VAINDTT VAIP("D")=$$DATIM(VAINDTT) D ^VADPT0 S:$L(VAINDTT)
| |
| VAIP("D")=VAINDTT Q
| |
| ;
| |
| ;ELIG ;Eligibility Information
| |
| ;S VAN=7,VAN(1)=9,VAV="VAEL" D ^VADPT0 Q
| |
| ;
| |
| ;MB ;Monetary Benefits
| |
| ;S VAN=8,VAN(1)=9,VAV="VAMB" D ^VADPT0 Q
| |
| ;
| |
| ;SVC ;Service Information
| |
| ;S VAN=9,VAN(1)=9,VAV="VASV" D ^VADPT0 Q
| |
| ;
| |
| ;REG ;Registration data
| |
| ;S VAN=10,VAV="VARP" D ^VADPT0 Q
| |
| ;
| |
| ;SDE ;Enrollment Information
| |
| ;S VAN=11,VAV="VAEN" D ^VADPT0 Q
| |
| ;
| |
| ;SDA ;Appointment Information
| |
| ;S VAN=12,VAV="VASD" D ^VADPT0 Q
| |
| ;
| |
| ;PID ;Patient Id
| |
| ;S VAN=13,VAV="VA" D ^VADPT0 Q
| |
| ;
| |
| ;TESTPAT(DFN) ;Test patient ? Returns 0 (No) or 1 (Yes)
| |
| ;S DFN=+$G(DFN) I 'DFN Q 0
| |
| ;I $D(^DPT("ATEST",DFN)) Q 1
| |
| ;N NODE S NODE=$G(^DPT(DFN,0))
| |
| ;I $P(NODE,"^",21)=1 Q 1
| |
| ;I $E($P(NODE,"^",9),1,5)="00000" Q 1
| |
| ;Q 0
| |
| ;
| |
| ;V5 S X=$S($D(^DG(43,1,"VERSION")):+^("VERSION"),1:""),VADPT("V")=$S
| |
| (X<5:0,1:1) K X Q
| |
| ;OERR ;
| |
| ;1 S VATAG=1 D MULT Q
| |
| ;2 S VATAG=2 D MULT Q
| |
| ;3 S VATAG=3 D MULT Q
| |
| ;4 S VATAG=4 D MULT Q
| |
| ;5 S VATAG=5 D MULT Q
| |
| ;6 S VATAG=6 D MULT Q
| |
| ;7 S VATAG=7 D MULT Q
| |
| ;8 S VATAG=8 D MULT Q
| |
| ;9 S VATAG=9 D MULT Q
| |
| ;10 S VATAG=10 D MULT Q
| |
| ;51 S VATAG=11 D MULT Q
| |
| ;52 S VATAG=12 D MULT Q
| |
| ;53 S VATAG=13 D MULT Q
| |
| ;ALL S VATAG=14 D MULT Q
| |
| ;A5 S VATAG=15 D MULT Q
| |
| ;SEL Q:$O(VARRAY(0))']"" S VATAG=0,VATAG(2)=$P($T(TAG),";;",2)
| |
| ;F VATAG(1)=0:0 S VATAG=$O(VARRAY(VATAG)) Q:VATAG="" I VATAG(2)
| |
| [("^"_VATAG_"^") S VARRAY(VATAG)=1,VAROOT=$S($D(VAROOT(VATAG)):VAROOT
| |
| (VATAG),1:"") D @VATAG
| |
| ;G Q
| |
| ;
| |
| ;MULT S VATAG=$P($T(TG+VATAG),";;",2)
| |
| ;F VATAG(1)=1:1 S VATAG(2)=$P(VATAG,"^",VATAG(1)) Q:VATAG(2)="" S
| |
| VAROOT=$S($D(VAROOT(VATAG(2))):VAROOT(VATAG(2)),1:"") D @(VATAG(2))
| |
| ;Q S VAROOT="" K:$D(VAROOT)'=11 VAROOT K VATAG Q
| |
| ;
| |
| ;KVA K VA
| |
| ;KVAR D KVAR^VADPT0 K:$D(VAIP("V")) @(VAIP("V")) K
| |
| I,X,Y,VARRAY,VADM,VAPD,VADPT,VAOA,VASV,VAEL,VAMB,VARP,VAEN,VASD,VAIN,VAIP,VAPA,VAHOW,VAINDT,VAERR,^UTILITY
| |
| ("VADPT",$J),VA200,VATEST Q
| |
| ;DATIM(DATIM) ;If time not specified see if movement on that date
| |
| ;Q:DATIM'?7N DATIM
| |
| ;N A,B S A=$O(^DGPM("ADFN"_DFN,DATIM)),B=+$O(^(+A,0))
| |
| ;I 'A Q DATIM
| |
| ;I $P($G(^DGPM(+B,0)),"^",2)=3 Q DATIM ;Next movement is discharge
| |
| ;F Q:"^4^5^7^"'[(U_$P($G(^DGPM(+B,0)),"^",2)) S A=$O(^DGPM
| |
| ("ADFN"_DFN,A)),B=+$O(^(+A,0)) I $E(A,1,7)'=DATIM Q
| |
| ;I 'A Q DATIM
| |
| ;I $E(A,1,7)'=DATIM Q DATIM
| |
| ;Q A
| |
| ;
| |
| ;TG ;
| |
| ;;DEM^INP
| |
| ;;DEM^ELIG
| |
| ;;ELIG^INP
| |
| ;;DEM^ADD
| |
| ;;ADD^INP
| |
| ;;DEM^ELIG^ADD
| |
| ;;ELIG^SVC
| |
| ;;ELIG^SVC^MB
| |
| ;;DEM^REG^SDE^SDA
| |
| ;;SDE^SDA
| |
| ;;DEM^IN5
| |
| ;;ELIG^IN5
| |
| ;;ADD^IN5
| |
| ;;DEM^OPD^INP^ADD^ELIG^SVC^OAD^MB^REG^SDE^SDA
| |
| ;;DEM^OPD^IN5^ADD^ELIG^SVC^OAD^MB^REG^SDE^SDA
| |
| ;
| |
| ;TAG ;;^DEM^OPD^INP^IN5^ADD^OAD^ELIG^SVC^MB^REG^SDE^SDA^
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| ; VERY IMPORTANT EXAMPLE OF PATIENT LOOKUP MAIN ROUTINE
| |
| ;
| |
| ; DPTLK ;ALB/RMO,RTK - MAS Patient Look-up Main Routine ; 3/22/05
| |
| 4:19pm
| |
| ;;
| |
| 5.3;Registration;**32,72,93,73,136,157,197,232,265,277,223,327,244,513,528,541,576,600,485,633,629,647**;Aug
| |
| 13, 1993
| |
| ;
| |
| ; mods made for magstripe read 12/96 - JFP
| |
| ;
| |
| ;Optional input: DPTNOFZY='1' to suppress fuzzy lookups implemented
| |
| ; by patch DG*5.3*244
| |
| ;
| |
| ;
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| DPTLK ;ALB/RMO,RTK - MAS Patient Look-up Main Routine ; 3/22/05 4:19pm
| |
| ;;
| |
| 5.3;Registration;**32,72,93,73,136,157,197,232,265,277,223,327,244,513,528,541,576,600,485,633,629,647**;Aug
| |
| 13, 1993
| |
| ; | | ; |
| ; mods made for magstripe read 12/96 - JFP | | ; VISTA>S DUZ=10000000020 |
| ; | | ; |
| ;Optional input: DPTNOFZY='1' to suppress fuzzy lookups implemented | | ; VISTA>D ^XUP |
| ; by patch DG*5.3*244 | | |
| | ; Setting up programmer environment |
| | ; This is a TEST account. |
| ; | | ; |
| EN ; -- Entry point
| | ; Terminal Type set to: C-VT320 |
| N DIE,DR
| |
| K DPTX,DPTDFN,DPTSAVX I $D(DIC(0)) G QK:DIC(0)["I"!(DIC(0)'["A"&('$D
| |
| (X)))
| |
| I '$D(^DD("VERSION")) W !!?3,"Unable to proceed. Fileman version node
| |
| ^DD(""VERSION"") is undefined." G QK
| |
| I '$D(^DPT(0))!(^DD("VERSION")<17.2) W !!?3,"Unable to proceed. ",$S
| |
| ('$D(^DPT(0)):"0th node of ^DPT missing",^DD("VERSION")<17.2:"Fileman
| |
| version must be at least 17.2",1:""),"." G QK
| |
| EN2 K DO,DUOUT,DTOUT S U="^",DIC="^DPT(",DIC(0)=$S($D(DIC(0)):DIC(0),
| |
| 1:"AELMQ") S:DIC(0)'["A" (DPTX,DPTSAVX)=X
| |
| S DPTSZ=1000 I $D(^DD("OS"))#2 S DPTSZ=$S(+$P(^DD("OS",^("OS"),0),U,2):
| |
| $P(^(0),U,2),1:DPTSZ)
| |
| ; | | ; |
| ASKPAT ; -- Prompt for patient
| | ; Select OPTION NAME: |
| I DIC(0)["A" D G QK:'$T!($E(DPTX)["^")!(DPTX="")
| | ; VISTA> |
| .K DTOUT,DUOUT
| |
| .W !,$S($D(DIC("A")):DIC("A"),1:"Select PATIENT NAME: ") W:$D(DIC
| |
| ("B")) DIC("B"),"// "
| |
| .R X:DTIME
| |
| .S DPTX=X S:'$T DTOUT=1 S:$T&(DPTX="")&($D(DIC("B"))) DPTX=DIC("B")
| |
| S:DPTX["^"&($E(DPTX)'="%") DUOUT=1
| |
| ; -- Check for the IATA magnetic stripe input
| |
| N MAG,GCHK
| |
| S MAG=0
| |
| I $E(DPTX)="%"!($E(DPTX)=";"),DPTX["?" S MAG=1,(X,DPTX)=$$IATA(DPTX)
| |
| ; | | ; |
| CHKPAT ; -- Custom Patient Lookup
| | ; VISTA>D ^NAM5SSN |
| D DO^DIC1
| |
| S DIC("W")=$S($D(DIC("W")):DIC("W"),1:"")
| |
| K DPTIFNS,DPTS,DPTSEL
| |
| S DPTCNT=0
| |
| ; -- Check input for format an length
| |
| G CHKDFN:DPTX?1A!(DPTX'?.ANP)!($L(DPTX)>30)
| |
| ; -- Check for null response or abort
| |
| I DPTX=""!(DPTX["^") G ASKPAT:DIC(0)["A",QK
| |
| ; -- Check for question mark
| |
| I DPTX["?" D G ASKPAT:DIC(0)["A",QK
| |
| .S D="B"
| |
| .S DZ=$S(DPTX?1"?":"",1:"??")
| |
| .G CHKPAT1:DZ="??"
| |
| .N %
| |
| .W !,?1,"Answer with PATIENT NAME, or SOCIAL SECURITY NUMBER, or last
| |
| 4 digits",!,?4,"of SOCIAL SECURITY NUMBER, or first initial of"
| |
| .W " last name with last",!,?4,"4 digits of SOCIAL SECURITY NUMBER"
| |
| .W !,?1,"Do you want the entire ",+$P($G(^DPT(0)),"^",4),"-Entry
| |
| PATIENT List" S %=0 D YN^DICN
| |
| .Q:%'=1
| |
| .S DZ="??"
| |
| CHKPAT1 .S X=DPTX
| |
| .D DQ^DICQ
| |
| ; -- Check for space bar, return
| |
| I DPTX=" " D G CHKDFN
| |
| .S Y=$S('($D(DUZ)#2):-1,$D(^DISV(DUZ,"^DPT(")):^("^DPT("),1:-1)
| |
| .D SETDPT^DPTLK1:Y>0
| |
| .S DPTDFN=$S($D(DPTS(Y)):Y,1:-1)
| |
| ; -- Check for DFN look up
| |
| I $E(DPTX)="`" D G CHKDFN
| |
| .S Y=$S($D(^DPT(+$P(DPTX,"`",2),0)):+$P(DPTX,"`",2),1:-1)
| |
| .D SETDPT^DPTLK1:Y>0
| |
| .S DPTDFN=$S($D(DPTS(Y)):Y,1:-1)
| |
| ; -- Puts input in correct format
| |
| G CHKDFN:DPTX=""
| |
| ; -- Force new entry
| |
| I $E(DPTX)="""",$E(DPTX,$L(DPTX))="""" G NOPAT
| |
| ; -- Check for index lookups
| |
| D ^DPTLK1 G QK:$D(DTOUT)!($D(DUOUT)&(DIC(0)'["A")),ASKPAT:$D
| |
| (DUOUT),CHKPAT:DPTDFN<0,CHKDFN:DPTDFN>0 I DIC(0)["N",$D(^DPT(DPTX,0))
| |
| S Y=X D SETDPT^DPTLK1 S DPTDFN=$S($D(DPTS(Y)):Y,1:-1) G CHKDFN
| |
| MAG ; -- No patient found, check for mag stripe input, create stub
| |
| I 'MAG G NOPAT
| |
| ; -- Check for ADT option(s) only
| |
| N DGOPT
| |
| S DGOPT=$P($G(XQY0),"^",2)
| |
| I DGOPT'="Load/Edit Patient Data",DGOPT'="Register a Patient" D G EN2
| |
| .W !," ...Patient not in database, use ADT options to load patient" D
| |
| Q1
| |
| ; -- Prompt for creation of stub
| |
| S DIR(0)="Y",DIR("B")="NO",DIR("A")="Patient not found...Create stub
| |
| entry: "
| |
| S GCHK=$D(^TMP("DGVIC"))
| |
| D ^DIR
| |
| K DIR
| |
| I 'Y D Q1 G EN2
| |
| ; -- Parse IATA fields
| |
| D FIELDS(IATA)
| |
| ; -- Check for Duplicates
| |
| D EP2^DPTLK3
| |
| I DPTDFN<0 D Q1 G EN2
| |
| ; -- Creates Stub entry in patient file
| |
| S Y=$$FILE^DPTLK4(DGFLDS)
| |
| I $P(Y,"^",3)'=1 W !,"Could not add patient to patient file" D QK1 Q
| |
| D QK1
| |
| Q
| |
| ; | | ; |
| NOPAT ; -- No patient found, ask to add new
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| I DIC(0)["L" D ^DPTLK2 S Y=DPTDFN G ASKPAT:DIC(0)["A"&(Y<0)&('$G
| |
| (DTOUT)),QK1
| |
| ; | | ; |
| CHKDFN ; --
| | ; Assuming you want field #9 from File #2, the name of the field is |
| S:'$D(DPTDFN) DPTDFN=-1 I DPTDFN'>0!('$D(DPTS(+DPTDFN))) W:DIC(0)["Q"
| | retrieved |
| *7," ??" G ASKPAT:DIC(0)["A",QK
| | ; with the MUMPS expression |
| I DIC(0)["E" D W $S('$D(DPTSEL)&('$D(DIVP)):$P(DPTS(DPTDFN),U,2)_" "_$P
| | ; WRITE $PIECE(^DD(2,9,0),"^",1),! |
| (DPTS(DPTDFN),U)_" ",$D(^DPT(DPTDFN,0)):" "_$P(^(0),U)_" ",1:"") S
| |
| Y=DPTDFN X:$D(^DPT(DPTDFN,0)) "N DDS X DIC(""W"")"
| |
| .I $D(DDS) D CLRMSG^DDS S DX=0,DY=DDSHBX+1 X DDXY
| |
| ; | | ; |
| ; check for other patients in "BS5" xref on Patient file | | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| I '$G(DICR),DPTDFN>0,DIC(0)["E",$$BS5^DPTLK5(+DPTDFN) D G ASKPAT:DIC(0)
| |
| ["A"&(%'=1),QK:DPTDFN<0
| |
| .N DPTZERO,DPTLSNME,DPTSSN S DPTZERO=$G(^DPT(+DPTDFN,0)),DPTLSNME=$P($P
| |
| (DPTZERO,U),","),DPTSSN=$E($P(DPTZERO,U,9),6,9)
| |
| .W $C(7),!!,"There is more than one patient whose last name is
| |
| '",DPTLSNME,"' and"
| |
| .W !,"whose social security number ends with '",DPTSSN,"'."
| |
| .W !,"Are you sure you wish to continue (Y/N)" S %=0 D YN^DICN
| |
| .I %'=1 S DPTDFN=-1
| |
| ; | | ; |
| I '$G(DICR),DPTDFN>0 S Y=DPTDFN D ^DGSEC S DPTDFN=Y G ASKPAT:DIC(0)
| | ; observe the difference between |
| ["A"&(DPTDFN<0),QK:DPTDFN<0
| | ; field number and global subscript location: |
| S DPTX=DPTX_$P(DPTS(DPTDFN),U,2),DPTDFN=DPTDFN_U_$P(^DPT(DPTDFN,0),U)
| |
| ; | | ; |
| Q ; --
| | ; Select DATA DICTIONARY UTILITY OPTION: LIST FILE ATTRIBUTES |
| S Y=$S('$D(DPTDFN):-1,'$D(DPTS(+DPTDFN)):-1,1:DPTDFN),X=$S($D(DPTX)&
| | ; START WITH WHAT FILE: PATIENT// |
| (+Y>0):DPTX,$D(DPTSAVX):DPTSAVX,$D(DPTX):DPTX,1:"")
| | ; GO TO WHAT FILE: PATIENT// |
| I Y>0 S:DIC(0)'["F" ^DISV($S($D(DUZ)#2:DUZ,1:0),"^DPT(")=+Y S:DIC(0)
| | ; Select SUB-FILE: |
| ["Z" Y(0)=^DPT(+Y,0),Y(0,0)=$P(^(0),U,1)
| | ; Select LISTING FORMAT: STANDARD// CUSTOM-TAILORED |
| ;DG*600 | | ; SORT BY: LABEL// NUMBER |
| ;I DIC(0)["E",$P($G(^DPT(+Y,0)),U,21) W *7,!,"Warning : You have | | ; START WITH NUMBER: FIRST// |
| selected a test patient."
| | ; WITHIN NUMBER, SORT BY: |
| I DIC(0)["E",$$TESTPAT^VADPT(+Y) W *7,!,"WARNING : You may have
| | ; FIRST PRINT ATTRIBUTE: LABEL |
| selected a test patient."
| | ; THEN PRINT ATTRIBUTE: NUMBER |
| I DIC(0)["E",$$BADADR^DGUTL3(+Y) W *7,!,"WARNING : ** This patient has
| | ; THEN PRINT ATTRIBUTE: GLOBAL SUBSCRIPT LOCATION |
| been flagged with a Bad Address Indicator."
| | ; THEN PRINT ATTRIBUTE: |
| I DIC(0)["E",$$VAADV^DPTLK3(+Y) W *7,!,"** Patient is VA ADVANTAGE."
| | ; Heading (S/C): FIELD SEARCH// |
| ;DG*485 | | ; DEVICE: 0;80;999 TELNET |
| I $D(^DPT("AXFFP",1,+Y)) D FFP^DPTLK5
| | ; PATIENT FILE FIELD SEARCH SEP 24,2009 22:01 PAGE 1 |
| ;Display enrollment information | | ; LABEL NUMBER GLOBAL |
| I Y>0,DIC(0)["E" D ENR
| | ; SUBSCRIPT LOCATION |
| ; | | ; |
| ;Call Combat Vet check | | ; Below is the section on address. Note: |
| I Y>0,DIC(0)["E" D CV
| | ; Field Label, Number, and Global Subscript Location |
| ; | | ; |
| ; check whether to display Means Test Required message
| |
| D
| |
| .N DPTDIV
| |
| .I '$G(DUZ(2)) Q
| |
| .I Y>0,DIC(0)["E" S DPTDIV=$$DMT^DPTLK5(+Y,DUZ(2)) I DPTDIV D
| |
| ..W $C(7),!!,"MEANS TEST REQUIRED"
| |
| ..W !,?3,$P($G(^DG(40.8,DPTDIV,"MT")),U,2)
| |
| ..H 2
| |
| ; | | ; |
| Q1 ; -- Clean up variables
| | -------------------------------------------------------------------------------- |
| K D,DIC("W"),DO,DPTCNT,DPTDFN,DPTIFNS,DPTIX,DPTS
| |
| K DPTSAVX,DPTSEL,DPTSZ,DPTX
| |
| ; | | ; |
| K:$D(IATA) IATA
| | ; NAME .01 0;1 |
| K:$D(DGFLDS) @DGFLDS,DGFLDS
| | ; SEX .02 0;2 |
| Q
| | ; DATE OF BIRTH .03 0;3 |
| | ; AGE .033 ; |
| | ; MARITAL STATUS .05 0;5 |
| | ; RACE .06 0;6 |
| | ; OCCUPATION .07 0;7 |
| | ; RELIGIOUS PREFERENCE .08 0;8 |
| | ; DUPLICATE STATUS .081 0;18 |
| | ; PATIENT MERGED TO .082 0;19 |
| | ; CHECK FOR DUPLICATE .083 0;20 |
| | ; SOCIAL SECURITY NUMBER .09 0;9 |
| ; | | ; |
| QK K:'$D(DPTNOFZK) DPTNOFZY G Q
| |
| ; | | ; |
| QK1 K:'$D(DPTNOFZK) DPTNOFZY G Q1
| | ; STREET ADDRESS [LINE 1] .111 .11;1 |
| | ; ZIP+4 .1112 .11;12 |
| | ; STREET ADDRESS [LINE 2] .112 .11;2 |
| | ; STREET ADDRESS [LINE 3] .113 .11;3 |
| | ; CITY .114 .11;4 |
| | ; STATE .115 .11;5 |
| | ; ZIP CODE .116 .11;6 |
| | ; COUNTY .117 .11;7 |
| | ; ADDRESS CHANGE DT/TM .118 .11;13 |
| | ; ADDRESS CHANGE SOURCE .119 .11;14 |
| ; | | ; |
| IX ; --
| | ; Thus the first line of the address is in piece 1 of subscript " .11" |
| I $D(D),$D(^DD(2,0,"IX",D)),($E(D)'="A") S DPTIX=D
| | ; Like so: $P(^DPT(patientnum,.11),"^",1) |
| G DPTLK
| | ; And CITY is in piece 4: |
| | ; $P(^DPT(patnumber,.11),"^",4) |
| ; | | ; |
| IATA(X) ; --
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;This function pulls off ssn from the IATA track | |
| ; | | ; |
| ;Input: X - what was read in | | ; Addressing this bit of MUMPS code: |
| ;Output: SSN - social security number
| |
| ; Q - quit
| |
| ; | | ; |
| ; Track Start Sent End Sent Field Separator | | ; S ZSTATE=$P(^DD(5,STATE,0),"^",1) |
| ; ----- ---------- -------- ---------------
| |
| ; IATA (alphanum) % ? { (Note: VA used ^)
| |
| ; ABA (numeric) ; ? =
| |
| ; | | ; |
| ;N IATA | | ; this says (in MUMPS-ish English) |
| S (IATA)=""
| |
| I $E(X)'="%" Q X ; no start sentinel
| |
| I X'["?" Q "Q"
| |
| ; -- Extract data from track
| |
| S IATA=$$TRACK(X,"%","?")
| |
| ; -- checks for no data
| |
| I IATA="" Q "Q"
| |
| ; -- Returns SSN
| |
| I IATA'="" Q $P(IATA,"^")
| |
| Q "Q"
| |
| ; | | ; |
| TRACK(X,START,END) ; find track where start/end are sentinels
| | ; create a local variable for this process only named ZSTATE |
| | ; with the value found by reading the local variable STATE |
| | ; and using it as a FileMan Field Number. |
| | ; Use this FileMan Field Number to find the FileMan Field Name |
| | ; by looking it up in the Data Dictionary of the File #5. |
| | ; (not stated, but known by me, File #5 is the VistA STATE File) |
| | ; The Field Name is found by retrieving the "Zeroth" node of the |
| | ; Data Dictionary, and then processing it by removing the first piece |
| | ; of the string stored in that zeroth node value, which is itself a |
| | ; string of characters, using a "^" (caret character) as a delimiter. |
| ; | | ; |
| Q $P($P($G(X),START,2),END,1)
| | ; This does NOT do what you have been saying you want to do. |
| ; | | ; |
| FIELDS(IATA) ; -- Sets fields
| | ; If you want to look up the name of a state using the index for that |
| Q:'$D(IATA)
| | ; state (the internal entry number of that entry in the STATE File) |
| N CNT,FIELD
| | ; you must look in the global used for the STATE File. |
| S DGFLDS="^TMP(""DGVIC"","_$J_")",CNT=1
| |
| K @DGFLDS
| |
| F S FIELD=$P($G(IATA),"^",CNT) Q:FIELD="" D
| |
| .S @DGFLDS@(CNT)=FIELD
| |
| .S CNT=CNT+1
| |
| ; -- Define fields for duplicate checker
| |
| S DPTX=$G(@DGFLDS@(2)) ;NAME
| |
| S DPTIDS(.03)=$G(@DGFLDS@(3)) ;DOB
| |
| S DPTIDS(.09)=$G(@DGFLDS@(1)) ;SSN
| |
| Q
| |
| ENR ;Display Enrollment information after patient selection
| |
| N DGENCAT,DGENDFN,DGENR,DGEGTIEN,DGEGT
| |
| I '$$GET^DGENA($$FINDCUR^DGENA(+DPTDFN),.DGENR) Q
| |
| S DGENCAT=$$CATEGORY^DGENA4(+DPTDFN)
| |
| S DGENCAT=$$EXTERNAL^DILFD(27.15,.02,"",DGENCAT)
| |
| W !?1,"Enrollment Priority: ",$S($G(DGENR("PRIORITY")):$$EXT^DGENU
| |
| ("PRIORITY",DGENR("PRIORITY")),1:""),$S($G(DGENR("SUBGRP"))="":"",1:$
| |
| $EXT^DGENU("SUBGRP",$G(DGENR("SUBGRP"))))
| |
| W ?33,"Category: ",DGENCAT
| |
| W ?57,"End Date: ",$S($G(DGENR("END")):$$FMTE^XLFDT(DGENR
| |
| ("END"),"5DZ"),1:""),!
| |
| ;If patient is NOT ELIGIBLE, display Enrollment Status (Ineligible | |
| Project Phase I)
| |
| I $G(DGENR("STATUS"))=10!($G(DGENR("STATUS"))=19)!($G(DGENR("STATUS"))
| |
| =20) D
| |
| . W ?1,"Enrollment Status: ",$S($G(DGENR("STATUS")):$$EXT^DGENU
| |
| ("STATUS",DGENR("STATUS")),1:"") ;H 5
| |
| ;check for Combat Veteran Eligibility, if elig do not display EGT info
| |
| I $$CVEDT^DGCV(+DPTDFN) Q
| |
| ;Get Enrollment Group Threshold Priority and Subgroup | |
| S DGEGTIEN=$$FINDCUR^DGENEGT
| |
| S DGEGT=$$GET^DGENEGT(DGEGTIEN,.DGEGT)
| |
| Q:$G(DGENR("PRIORITY"))=""!($G(DGEGT("PRIORITY"))="")
| |
| ;Compare Patient's Enrollment Priority to Enrollment Group Threshold
| |
| I '$$ABOVE^DGENEGT1(+DPTDFN,DGENR("PRIORITY"),$G(DGENR("SUBGRP")),DGEGT
| |
| ("PRIORITY"),DGEGT("SUBGRP")) D
| |
| .N X,IORVOFF,IORVON
| |
| .S X="IORVOFF;IORVON"
| |
| .D ENDR^%ZISS
| |
| .W !?32 W:$D(IORVON) IORVON W "*** WARNING ***" W:$D(IORVOFF) IORVOFF
| |
| .I DGENR("END")'="" W !?14 W:$D(IORVON) IORVON W "*** PATIENT
| |
| ENROLLMENT END",$S(DT>+DGENR("END"):"ED",1:"S")," EFFECTIVE ",$
| |
| $FMTE^XLFDT(DGENR("END"),"5DZ")," ***" W:$D(IORVOFF) IORVOFF Q
| |
| .W !?5 W:$D(IORVON) IORVON W "*** PATIENT ENROLLMENT ENDING.
| |
| ENROLLMENT END DATE IS NOT KNOWN. ***" W:$D(IORVOFF) IORVOFF
| |
| Q
| |
| CV ;check for Combat Vet status
| |
| N DGCV
| |
| S DGCV=$$CVEDT^DGCV(+DPTDFN)
| |
| I $P(DGCV,U)=1 D Q
| |
| . I '$$GET^DGENA($$FINDCUR^DGENA(+DPTDFN),.DGENR) W !
| |
| . W ?3,"Combat Vet Status: "_$S($P(DGCV,U,3)=1:"ELIGIBLE", | |
| 1:"EXPIRED"),?57,"End Date: "_$$FMTE^XLFDT($P(DGCV,U,2),"5DZ")
| |
|
| |
|
| ----------------------------------------------------------------------------
| | ; If you use the internal entry number of the state as if it were a |
| </pre>
| | field |
| | ; number, you will get the wrong information. |
|
| |
|
| Here is the short version of my basic program with little
| | ; If you want to get the value of a particular state, you must find |
| documentation.
| | out the |
| I will be using this version to use method 1 to solve this problem, | | ; global root for the STATE File. I happen to know that the global |
| by adding field numbers manually and manually writing them to the
| | root |
| screen or a text file. The other version later.
| | ; for the STATE File is "^DIC(5," I know this because I use the |
| <pre>
| | FileMan |
| =========================================================
| | ; inquire option to find it. |
| | | ; |
| USER>D ^%CD
| | ; Select OPTION: INQUIRE TO FILE ENTRIES |
| | | ; |
| Namespace: VISTA
| | ; OUTPUT FROM WHAT FILE: STATE// FILE |
| You're in namespace VISTA
| | ; Select FILE: STATE |
| Default directory is c:\cachesys\mgr\vista\
| | ; ANOTHER ONE: |
| VISTA>
| | ; STANDARD CAPTIONED OUTPUT? Yes// (Yes) |
| | | ; Include COMPUTED fields: (N/Y/R/B): NO// BOTH Computed Fields and |
| VISTA>S DUZ=10000000020
| | Record Number |
| | | ; (IEN) |
| VISTA>D ^XUP
| | ; |
| | | ; NUMBER: 5 NAME: STATE |
| Setting up programmer environment
| | ; APPLICATION GROUP: VA |
| This is a TEST account. | | ; DESCRIPTION: This file contains the name of the state (or outlying |
| | | area) as |
| Terminal Type set to: C-VT320
| | ; issued by the Department of Veterans Affairs and issued in M-1, Part |
| | | I, |
| Select OPTION NAME:
| | ; Appendix B. These entries should remain as distributed and should |
| VISTA>
| | not be |
| | | ; edited or updated unless done via a software upgrade or under |
| VISTA>D ^NAM3SSN
| | direction of VA |
| | | ; Central Office. |
| Select PATIENT NAME: ONE
| | ; GLOBAL NAME (c): ^DIC(5, ENTRIES (c): 82 |
| 1 ONE,IMAGEPATIENT 4-15-53 666061001 NO NSC
| | ; DD ACCESS (c): # WR ACCESS (c): # |
| VETERAN
| | ; DEL ACCESS (c): # LAYGO ACCESS (c): # |
| | | ; VERSION (c): 5.3 COMPILED CROSS-REFERENCES (c): NO |
| 2 ONE,INPATIENT 3-9-45 666000801 NO NSC VETERAN
| | ; |
| | | ; After I find out the global root for the STATE File, I have to get |
| 3 ONE,OUTPATIENT 3-9-45 666000601 NO NSC
| | the |
| VETERAN
| | ; value for the NAME |
| | | ; of the STATE. I happen to know this is in the Zeroth node and the |
| 4 ONE,PATIENT 4-7-35 666000001 YES SC VETERAN
| | ; first piece using |
| | | ; "^" as a delimiter. |
| 5 ONEHUNDRED,INPATIENT 3-9-45 666000900 NO NSC
| | ; |
| VETERAN
| | ; So the code should be |
| | | ; |
| ENTER '^' TO STOP, OR
| | ; SET ZSTATE=$P(^DIC(5,STATE,0),"^",1) |
| CHOOSE 1-5: 4 ONE,PATIENT 4-7-35 666000001 YES SC
| | ; |
| VETERAN
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | | ; |
| Enrollment Priority: GROUP 3 Category: IN PROCESS End Date:
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | | ; FROM: |
| | | ; DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY ;23 AUG 00 ; |
| Name: ONE,PATIENT SSN: 666000001
| | ; 5.3;Registration;**343**,Aug 13, 1993 |
| | | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| VISTA>
| | ; |
| | |
| | |
| | |
| NAM5SSN ; Lab 9; TEST VISTA SELECT PATIENT NAME: W NAME & SSN; AHR;
| |
| 09/20/2009
| |
| ;
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ; FROM:
| |
| ; DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY ;23 AUG 00 ;
| |
| ; 5.3;Registration;**343**,Aug 13, 1993
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| |
| ;
| |
| EN ;Entry point | | EN ;Entry point |
| N DGDFN,DGPAT,DGNAM,DGSSN
| | N DGDFN,DGPAT,DGNAM,DGSSN |
| | | N SEX,DOB,ADDRESS,CITY,STATE,ZIP,PHONE |
| I DTIME="" S DTIME=30 ; added 1 line; TIMEOUT 4 READ set if ^XUP not
| | ; |
| | ;I DTIME="" S DTIME=30 ; added 1 line; TIMEOUT 4 READ set if ^XUP not |
| run | | run |
| | | S DTIME=9999 |
| S DGDFN=$$GETDFN()
| | ; |
| Q:DGDFN'>0
| | W !,"===========================================" |
| ;
| | W !,"VISTA SELECT PATIENT PROCEDURE: ",! |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | W "===========================================",! |
| - Show quoted text -
| | ; |
| ; --->>> taking out the $$GETPAT(DGDFN) code because it is not
| | S DGDFN=$$GETDFN() |
| simple.
| | Q:DGDFN'>0 |
| ;
| | ; |
| ;S DGPAT=$$GETPAT(DGDFN)
| | S DGNAM=$$NAME(DGDFN) |
| ;Q:$P(DGPAT,U)=""
| | ; |
| ;S DGNAM=$P(DGPAT,U),DGSSN=$P(DGPAT,U,2)
| | S DGSSN=$$SSN(DGDFN) |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ;
| | S SEX=$P($G(^DPT(DGDFN,0)),"^",2) |
| S DGNAM=$$NAME(DGDFN)
| | ; |
| ;
| | ; |
| S DGSSN=$$SSN(DGDFN)
| | S DOB=$P($G(^DPT(DGDFN,0)),"^",3) |
| ;
| | S ZDOB=$ZDATETIME(DOB) |
| W !!,"Name: ",DGNAM," ","SSN: ",DGSSN,! ; Only line I have written
| | ; |
| ;
| | S ADDRESS=$P(^DPT(DGDFN,.11),"^",1) |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ;
| | S CITY=$P(^DPT(DGDFN,.11),"^",4) |
| ; THIS CODE IS BEING USED
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | S STATE=$P(^DPT(DGDFN,.11),"^",5) |
| ; FROM:
| | SET ZSTATE=$P(^DIC(5,STATE,0),"^",1) |
| ; DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY
| | ; |
| ;23 AUG 00 ;;5.3;Registration;**343**,Aug 13, 1993
| | S ZIP=$P(^DPT(DGDFN,.11),"^",6) |
| ;
| | ; |
| ; this code commented out for reference to the entry point above.
| | S PHONE=$P(^DPT(DGDFN,.13),"^",1) |
| GETDFN() ;Ask the user to select patient
| | ; |
| ;
| | ; cell .13;10 |
| ; Input: none
| | ; S CELLPHONE=$P(^DPT(DGDFN,.13),"^",10) |
| ;
| | ; e-mail address .13;3 |
| ; Output: DFN
| | ; S EMAIL=$P(^DPT(DGDFN,.13),"^",3) |
| ;
| | ; |
| N DIC,X,Y
| | W !,"===========================================",! |
| S DIC="^DPT(",DIC(0)="AEMQ"
| | W !,"NAME5SSN SELECTED PATIENT DATA: " |
| D ^DIC
| | W !,"===========================================",! |
| Q $S(+Y>0:+Y,1:0)
| | W !,"Name: ",DGNAM," SSN: ",DGSSN |
| ;
| | W !,"SEX: ",SEX," DOB: ",ZDOB," ADDRESS: ",ADDRESS |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | W !,"CITY: ",CITY," STATE: ",ZSTATE," ZIP: ",ZIP |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | W !,"PHONE: ", PHONE,! |
| ; FROM:
| | W !,"===========================================",! |
| ; VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998 ;
| | ; |
| ; 5.3;Registration;**209**;Aug 13, 1993
| | ; |
| ;
| | ; To write to an external file name: |
| ; THIS NEXT GETDFN() NOT IN USE INCLUDED FOR REFERENCE
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | set externalfilename="C:\Documents and Settings\robinson\My Documents |
| ;
| | \HOMEWORK\MUMPS\Lab 09\out_file.txt" |
| ; GETDFN() ;Get pointer to PATIENT file (#2)
| | open externalfilename:("NRW") |
| ; Input : None
| | use externalfilename |
| ;Output : DFN - Pointer to PATIENT file (#2)
| | ; |
| ; -1 - No entry selected
| | ; write to the selected file |
| ;
| | ; write a text file with the format: Field Id Name^Field Data^ |
| ; N DIC,X,Y,DTOUT,DUOUT
| | ; |
| ; S DIC="^DPT("
| | W "Name^",DGNAM,"^SSN^",DGSSN,"^" ; Line I have written |
| ; S DIC(0)="AEMNQZ"
| | W "SEX^",SEX,"^DOB^",ZDOB,"^ADDRESS^",ADDRESS,"^" |
| ; D ^DIC
| | W "CITY^",CITY,"^STATE^",ZSTATE,"^ZIP^",ZIP |
| ; Q +Y
| | W "PHONE^", PHONE,"^" |
| ;
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | close externalfilename |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ; GETDFN() ; Get the veteran's DFN
| | ; |
| ; N DIC,DTOUT,DUOUT,X,Y
| | ;W !,"WHOLE GLOBAL: ",$G(^DPT(DGDFN,0)) |
| ; W !
| | ; |
| ; S DIC="^DPT(",DIC(0)="AEMZQ",DIC("S")="I $D(^DGMT(408.31,""AID"",
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 3,+Y))"
| | ; FROM: |
| ; D ^DIC
| | ; VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998 ; |
| ; Q:$D(DTOUT)!($D(DUOUT)) 0
| | ; 5.3;Registration;**209**;Aug 13, 1993 |
| ; Q:Y<0 0
| | ; |
| ; Q +Y
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ;
| | GETDFN() ;Get pointer to PATIENT file (#2) |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; Input : None |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ;Output : DFN - Pointer to PATIENT file (#2) |
| ;
| | ; -1 - No entry selected |
| ; FROM:
| | ; |
| ; DGENPTA ;ALB/CJM - Patient API - Retrieve Data; 13 JUN 1997
| | N DIC,X,Y,DTOUT,DUOUT |
| ;;5.3;Registration;**121,122,147**;08/13/93
| | S DIC="^DPT(" |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | S DIC(0)="AEMNQZ" |
| ;
| | D ^DIC |
| | Q +Y |
| | ; |
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | ; |
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | ; |
| | ; FROM: |
| | ; DGENPTA ;ALB/CJM - Patient API - Retrieve Data; 13 JUN 1997 |
| | ;;5.3;Registration;**121,122,147**;08/13/93 |
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | ; |
| SSN(DFN) ; | | SSN(DFN) ; |
| ;Description: Function returns the patient's SSN, or "" on failure.
| | ;Description: Function returns the patient's SSN, or "" on failure. |
| ;
| | ; |
| Q:'DFN ""
| | Q:'DFN "" |
| Q $P($G(^DPT(DFN,0)),"^",9)
| | Q $P($G(^DPT(DFN,0)),"^",9) |
| ;
| | ; |
| NAME(DFN) ; | | NAME(DFN) ; |
| ;Description: Function returns the patient's NAME, or "" on failure.
| | ;Description: Function returns the patient's NAME, or "" on failure. |
| ;
| | ; |
| Q:'DFN ""
| | Q:'DFN "" |
| Q $P($G(^DPT(DFN,0)),"^")
| | Q $P($G(^DPT(DFN,0)),"^") |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;
| | ; |
| QUIT ; END NAM2SSN
| | QUIT ; END NAM2SSN |
| ;
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| QUIT ; MAKE SURE ENDING HERE
| | ; |
| ;
| | ; VERY IMPORTANT EXAMPLE OF PATIENT LOOKUP MAIN ROUTINE |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| | ; DPTLK ;ALB/RMO,RTK - MAS Patient Look-up Main Routine ; 3/22/05 |
| ;
| |
| ; VERY IMPORTANT EXAMPLE OF PATIENT LOOKUP MAIN ROUTINE
| |
| ;
| |
| ; DPTLK ;ALB/RMO,RTK - MAS Patient Look-up Main Routine ; 3/22/05
| |
| 4:19pm | | 4:19pm |
| ;;
| | ;; |
| 5.3;Registration;**32,72,93,73,136,157,197,232,265,277,223,327,244,513,528,541,576,600,485,633,629,647**;Aug | | 5.3;Registration;**32,72,93,73,136,157,197,232,265,277,223,327,244,513,528,541,576,600,485,633,629,647**;Aug |
| 13, 1993 | | 13, 1993 |
| ;
| | ; |
| ; mods made for magstripe read 12/96 - JFP
| | ; mods made for magstripe read 12/96 - JFP |
| ;
| | ; |
| ;Optional input: DPTNOFZY='1' to suppress fuzzy lookups implemented
| | ;Optional input: DPTNOFZY='1' to suppress fuzzy lookups implemented |
| ; by patch DG*5.3*244
| | ; by patch DG*5.3*244 |
| </pre>
| | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
FINISHED PROGRAM FOR RETRIEVING ONE PATIENT DATA METHOD #1:
==================================================
USER>D ^%CD
Namespace: VISTA
You're in namespace VISTA
Default directory is c:\cachesys\mgr\vista\
VISTA>
VISTA>S DUZ=10000000020
VISTA>D ^XUP
Setting up programmer environment
This is a TEST account.
Terminal Type set to: C-VT320
Select OPTION NAME:
VISTA>
VISTA>D ^NAM5SSN
===============================
VISTA SELECT PATIENT PROCEDURE:
===============================
Select PATIENT NAME: ONE
1 ONE,IMAGEPATIENT 4-15-53 666061001 NO NSC
VETERAN
2 ONE,INPATIENT 3-9-45 666000801 NO NSC VETERAN
3 ONE,OUTPATIENT 3-9-45 666000601 NO NSC
VETERAN
4 ONE,PATIENT 4-7-35 666000001 YES SC VETERAN
5 ONEHUNDRED,INPATIENT 3-9-45 666000900 NO NSC
VETERAN
ENTER '^' TO STOP, OR
CHOOSE 1-5: 4 ONE,PATIENT 4-7-35 666000001 YES SC
VETERAN
Enrollment Priority: GROUP 3 Category: IN PROCESS End Date:
===============================
NAME5SSN SELECTED PATIENT DATA:
===============================
Name: ONE,PATIENT SSN: 666000001
SEX: M DOB: 03/12/8276 ADDRESS: 1312 Ashton Place
CITY: Rowling STATE: WEST VIRGINIA ZIP: 99998
PHONE: 222-555-8235
===============================
VISTA>
============================================================
OUTPUT.TXT:
====
Name^ONE,PATIENT^SSN^666000001^SEX^M^DOB^03/12/8276^ADDRESS^1312
Ashton Place^CITY^Rowling^STATE^WEST
VIRGINIA^ZIP^99998PHONE^222-555-8235^
============================================================
NAM5SSN ; Lab 9 M1; VISTA SELECT PATIENT NAME: W NAME & SSN; AHR;
09/28/2009
- Setting up a VistA environment
- USER>D ^%CD
- Namespace
- VISTA
- You're in namespace VISTA
- Default directory is c
- \cachesys\mgr\vista\
- VISTA>S DUZ=10000000020
- VISTA>D ^XUP
- Setting up programmer environment
- This is a TEST account.
- Terminal Type set to
- C-VT320
- Select OPTION NAME
- VISTA>
- VISTA>D ^NAM5SSN
- Assuming you want field #9 from File #2, the name of the field is
retrieved
- with the MUMPS expression
- WRITE $PIECE(^DD(2,9,0),"^",1),!
- observe the difference between
- field number and global subscript location
- Select DATA DICTIONARY UTILITY OPTION
- LIST FILE ATTRIBUTES
- START WITH WHAT FILE
- PATIENT//
- GO TO WHAT FILE
- PATIENT//
- Select SUB-FILE
- Select LISTING FORMAT
- STANDARD// CUSTOM-TAILORED
- SORT BY
- LABEL// NUMBER
- START WITH NUMBER
- FIRST//
- WITHIN NUMBER, SORT BY
- FIRST PRINT ATTRIBUTE
- LABEL
- THEN PRINT ATTRIBUTE
- NUMBER
- THEN PRINT ATTRIBUTE
- GLOBAL SUBSCRIPT LOCATION
- THEN PRINT ATTRIBUTE
- Heading (S/C)
- FIELD SEARCH//
- DEVICE
- 0;80;999 TELNET
- PATIENT FILE FIELD SEARCH SEP 24,2009 22
- 01 PAGE 1
- LABEL NUMBER GLOBAL
- SUBSCRIPT LOCATION
- Below is the section on address. Note
- Field Label, Number, and Global Subscript Location
-----
- NAME .01 0;1
- SEX .02 0;2
- DATE OF BIRTH .03 0;3
- AGE .033 ;
- MARITAL STATUS .05 0;5
- RACE .06 0;6
- OCCUPATION .07 0;7
- RELIGIOUS PREFERENCE .08 0;8
- DUPLICATE STATUS .081 0;18
- PATIENT MERGED TO .082 0;19
- CHECK FOR DUPLICATE .083 0;20
- SOCIAL SECURITY NUMBER .09 0;9
- STREET ADDRESS [LINE 1] .111 .11;1
- ZIP+4 .1112 .11;12
- STREET ADDRESS [LINE 2] .112 .11;2
- STREET ADDRESS [LINE 3] .113 .11;3
- CITY .114 .11;4
- STATE .115 .11;5
- ZIP CODE .116 .11;6
- COUNTY .117 .11;7
- ADDRESS CHANGE DT/TM .118 .11;13
- ADDRESS CHANGE SOURCE .119 .11;14
- Thus the first line of the address is in piece 1 of subscript " .11"
- Like so
- $P(^DPT(patientnum,.11),"^",1)
- And CITY is in piece 4
- $P(^DPT(patnumber,.11),"^",4)
- Addressing this bit of MUMPS code
- S ZSTATE=$P(^DD(5,STATE,0),"^",1)
- this says (in MUMPS-ish English)
- create a local variable for this process only named ZSTATE
- with the value found by reading the local variable STATE
- and using it as a FileMan Field Number.
- Use this FileMan Field Number to find the FileMan Field Name
- by looking it up in the Data Dictionary of the File #5.
- (not stated, but known by me, File #5 is the VistA STATE File)
- The Field Name is found by retrieving the "Zeroth" node of the
- Data Dictionary, and then processing it by removing the first piece
- of the string stored in that zeroth node value, which is itself a
- string of characters, using a "^" (caret character) as a delimiter.
- This does NOT do what you have been saying you want to do.
- If you want to look up the name of a state using the index for that
- state (the internal entry number of that entry in the STATE File)
- you must look in the global used for the STATE File.
- If you use the internal entry number of the state as if it were a
field
- number, you will get the wrong information.
- If you want to get the value of a particular state, you must find
out the
- global root for the STATE File. I happen to know that the global
root
- for the STATE File is "^DIC(5," I know this because I use the
FileMan
- inquire option to find it.
- Select OPTION
- INQUIRE TO FILE ENTRIES
- OUTPUT FROM WHAT FILE
- STATE// FILE
- Select FILE
- STATE
- ANOTHER ONE
- STANDARD CAPTIONED OUTPUT? Yes// (Yes)
- Include COMPUTED fields
- (N/Y/R/B): NO// BOTH Computed Fields and
Record Number
- (IEN)
- NUMBER
- 5 NAME: STATE
- APPLICATION GROUP
- VA
- DESCRIPTION
- This file contains the name of the state (or outlying
area) as
- issued by the Department of Veterans Affairs and issued in M-1, Part
I,
- Appendix B. These entries should remain as distributed and should
not be
- edited or updated unless done via a software upgrade or under
direction of VA
- Central Office.
- GLOBAL NAME (c)
- ^DIC(5, ENTRIES (c): 82
- DD ACCESS (c)
- # WR ACCESS (c): #
- DEL ACCESS (c)
- # LAYGO ACCESS (c): #
- VERSION (c)
- 5.3 COMPILED CROSS-REFERENCES (c): NO
- After I find out the global root for the STATE File, I have to get
the
- value for the NAME
- of the STATE. I happen to know this is in the Zeroth node and the
- first piece using
- "^" as a delimiter.
- So the code should be
- SET ZSTATE=$P(^DIC(5,STATE,0),"^",1)
- FROM
- DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY ;23 AUG 00 ;
- 5.3;Registration;**343**,Aug 13, 1993
EN ;Entry point
N DGDFN,DGPAT,DGNAM,DGSSN
N SEX,DOB,ADDRESS,CITY,STATE,ZIP,PHONE
- I DTIME="" S DTIME=30 ; added 1 line; TIMEOUT 4 READ set if ^XUP not
run
S DTIME=9999
W !,"==========================================="
W !,"VISTA SELECT PATIENT PROCEDURE: ",!
W "===========================================",!
S DGDFN=$$GETDFN()
Q:DGDFN'>0
S DGNAM=$$NAME(DGDFN)
S DGSSN=$$SSN(DGDFN)
S SEX=$P($G(^DPT(DGDFN,0)),"^",2)
S DOB=$P($G(^DPT(DGDFN,0)),"^",3)
S ZDOB=$ZDATETIME(DOB)
S ADDRESS=$P(^DPT(DGDFN,.11),"^",1)
S CITY=$P(^DPT(DGDFN,.11),"^",4)
S STATE=$P(^DPT(DGDFN,.11),"^",5)
SET ZSTATE=$P(^DIC(5,STATE,0),"^",1)
S ZIP=$P(^DPT(DGDFN,.11),"^",6)
S PHONE=$P(^DPT(DGDFN,.13),"^",1)
- cell .13;10
- S CELLPHONE=$P(^DPT(DGDFN,.13),"^",10)
- e-mail address .13;3
- S EMAIL=$P(^DPT(DGDFN,.13),"^",3)
W !,"===========================================",!
W !,"NAME5SSN SELECTED PATIENT DATA: "
W !,"===========================================",!
W !,"Name: ",DGNAM," SSN: ",DGSSN
W !,"SEX: ",SEX," DOB: ",ZDOB," ADDRESS: ",ADDRESS
W !,"CITY: ",CITY," STATE: ",ZSTATE," ZIP: ",ZIP
W !,"PHONE: ", PHONE,!
W !,"===========================================",!
- To write to an external file name
set externalfilename="C:\Documents and Settings\robinson\My Documents
\HOMEWORK\MUMPS\Lab 09\out_file.txt"
open externalfilename:("NRW")
use externalfilename
- write to the selected file
- write a text file with the format
- Field Id Name^Field Data^
W "Name^",DGNAM,"^SSN^",DGSSN,"^" ; Line I have written
W "SEX^",SEX,"^DOB^",ZDOB,"^ADDRESS^",ADDRESS,"^"
W "CITY^",CITY,"^STATE^",ZSTATE,"^ZIP^",ZIP
W "PHONE^", PHONE,"^"
close externalfilename
- W !,"WHOLE GLOBAL
- ",$G(^DPT(DGDFN,0))
- FROM
- VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998 ;
- 5.3;Registration;**209**;Aug 13, 1993
GETDFN() ;Get pointer to PATIENT file (#2)
- Input
- None
- Output
- DFN - Pointer to PATIENT file (#2)
- -1 - No entry selected
N DIC,X,Y,DTOUT,DUOUT
S DIC="^DPT("
S DIC(0)="AEMNQZ"
D ^DIC
Q +Y
- FROM
- DGENPTA ;ALB/CJM - Patient API - Retrieve Data; 13 JUN 1997
- 5.3;Registration;**121,122,147**;08/13/93
SSN(DFN) ;
- Description
- Function returns the patient's SSN, or "" on failure.
Q:'DFN ""
Q $P($G(^DPT(DFN,0)),"^",9)
NAME(DFN) ;
- Description
- Function returns the patient's NAME, or "" on failure.
Q:'DFN ""
Q $P($G(^DPT(DFN,0)),"^")
QUIT ; END NAM2SSN
- VERY IMPORTANT EXAMPLE OF PATIENT LOOKUP MAIN ROUTINE
- DPTLK ;ALB/RMO,RTK - MAS Patient Look-up Main Routine ; 3/22/05
4:19pm
5.3;Registration;**32,72,93,73,136,157,197,232,265,277,223,327,244,513,528,541,576,600,485,633,629,647**;Aug
13, 1993
- mods made for magstripe read 12/96 - JFP
- Optional input
- DPTNOFZY='1' to suppress fuzzy lookups implemented
- by patch DG*5.3*244