| 1 | TMGTIU01 ;TMG/kst-Misc TIU Related Fns;11/08/08 | 
|---|
| 2 | ;;1.0;TMG-LIB;**1**;11/08/08 | 
|---|
| 3 | ; | 
|---|
| 4 | ;"Kevin Toppenberg MD | 
|---|
| 5 | ;"GNU General Public License (GPL) applies | 
|---|
| 6 | ;"11/08/08 | 
|---|
| 7 |  | 
|---|
| 8 | ;"--------------------------------------------------------------------------- | 
|---|
| 9 | ;"PUBLIC FUNCTIONS | 
|---|
| 10 | ;"--------------------------------------------------------------------------- | 
|---|
| 11 | ;"ENSURVST(PATIENT,VISIT,CLINIC,DOCTOR) -- Ensure that patient has an entry in the VISIT file. | 
|---|
| 12 | ;"GetPCEInfo(.array,DFN,DT,LocIEN) -- Get Patient Care Event info for patient on given date. | 
|---|
| 13 |  | 
|---|
| 14 | ;"--------------------------------------------------------------------------- | 
|---|
| 15 | ;"PRIVATE FUNCTIONS | 
|---|
| 16 | ;"--------------------------------------------------------------------------- | 
|---|
| 17 |  | 
|---|
| 18 |  | 
|---|
| 19 |  | 
|---|
| 20 | ;"--------------------------------------------------------------------------- | 
|---|
| 21 |  | 
|---|
| 22 | T1 | 
|---|
| 23 | new DFN,IEN,Y,X,DIC | 
|---|
| 24 | set DIC=2,DIC(0)="MAEQ" | 
|---|
| 25 | do ^DIC write ! | 
|---|
| 26 | if +Y'>0 goto TDone | 
|---|
| 27 | set DFN=+Y | 
|---|
| 28 |  | 
|---|
| 29 | new locIEN | 
|---|
| 30 | set DIC=44 ;"hospital location | 
|---|
| 31 | do ^DIC write ! | 
|---|
| 32 | if +Y'>0 goto TDone | 
|---|
| 33 | set locIEN=+Y | 
|---|
| 34 |  | 
|---|
| 35 | new %DT,selDT | 
|---|
| 36 | set %DT="AE" | 
|---|
| 37 | do ^%DT write ! | 
|---|
| 38 | if Y'>0 goto TDone | 
|---|
| 39 | set setDT=Y | 
|---|
| 40 |  | 
|---|
| 41 | new array | 
|---|
| 42 | do GetPCEInfo(.array,DFN,setDT,locIEN) | 
|---|
| 43 | if $data(array) zwr array | 
|---|
| 44 |  | 
|---|
| 45 | TDone | 
|---|
| 46 | quit | 
|---|
| 47 |  | 
|---|
| 48 |  | 
|---|
| 49 | ENSURVST(PATIENT,VISIT,CLINIC,DOCTOR) ; | 
|---|
| 50 | ;"Purpose: To ensure that patient has an entry in the VISIT file. | 
|---|
| 51 | ;"Input: PATIENT: the name and DOB of the patient.  format: | 
|---|
| 52 | ;"              'LName,FName I^12/12/1912' | 
|---|
| 53 | ;"       VISIT: Date and time of visit.  Format: 12/12/1912@23:15 (military time) | 
|---|
| 54 | ;"       CLINIC: the name of the clinic, to match entry in HOSPITAL LOCATION file | 
|---|
| 55 | ;"       DOCTOR: the name of the provider for the appt, to match entry in NEW PERSON file | 
|---|
| 56 | ;"Results: 1=OK, or 0^Error Message | 
|---|
| 57 |  | 
|---|
| 58 | new result set result=1 | 
|---|
| 59 | new IEN2,Entry | 
|---|
| 60 | set Entry(.01)=$piece(PATIENT,"^",1)  ;"Name | 
|---|
| 61 | set Entry(.03)=$piece(PATIENT,"^",2)  ;"DOB | 
|---|
| 62 |  | 
|---|
| 63 | set IEN2=$$GetDFN2^TMGGDFN(Entry,AutoRegister) | 
|---|
| 64 | if IEN2'>0 do  goto EVDone | 
|---|
| 65 | . set result="0^Patient Name/DOB not registered" | 
|---|
| 66 |  | 
|---|
| 67 | new HLIEN,DIC,X,Y | 
|---|
| 68 | set DIC=44  ;"HOSPITAL LOCATION file | 
|---|
| 69 | set DIC(0)="M",X=CLINIC | 
|---|
| 70 | do ^DIC | 
|---|
| 71 | if Y'>0 do  goto EVDone | 
|---|
| 72 | . set result="0^Can't find clinic '"_CLINIC_"' in HOSPITAL LOCATION file" | 
|---|
| 73 |  | 
|---|
| 74 | set DIC=200,X=DOCTOR | 
|---|
| 75 | do ^DIC | 
|---|
| 76 | if Y'>0 do  goto EVDone | 
|---|
| 77 | . set result="0^Can't find doctor '"_DOCTOR+"' in NEW PERSON file" | 
|---|
| 78 |  | 
|---|
| 79 | new VDT,%DT kill Y | 
|---|
| 80 | set %DT="T",X=VISIT | 
|---|
| 81 | do ^%DT | 
|---|
| 82 | if Y'>0 do  goto EVDone | 
|---|
| 83 | . set result="0^Invalid visit date: '"_VISIT_"'" | 
|---|
| 84 |  | 
|---|
| 85 |  | 
|---|
| 86 |  | 
|---|
| 87 | EVDone | 
|---|
| 88 | quit result | 
|---|
| 89 |  | 
|---|
| 90 |  | 
|---|
| 91 | GetPCEInfo(array,DFN,DT,LocIEN) | 
|---|
| 92 | ;"Purpose: to get Patient Care Event info for patient on given date. | 
|---|
| 93 | ;"Input: array -- PASS BY REFERENCE, an OUT PARAMETER.  Prior data killed. | 
|---|
| 94 | ;"       DFN -- the patient IEN | 
|---|
| 95 | ;"       DT -- the Date of the visit in FM format. | 
|---|
| 96 | ;"       LocIEN -- the IEN in the HOSPITAL LOCATION file for the clinic. | 
|---|
| 97 | ;"Output: array is filled, format: | 
|---|
| 98 | ;"              array(VISITDT,#)=InfoLine | 
|---|
| 99 | ;"              array(VISITDT,#)=InfoLine | 
|---|
| 100 | ;"                        ...,1)=HDR^AllowEdit^CPTRequired^VStr^Author^hasCPT | 
|---|
| 101 | ;"                        ...,n)=TYP+^CODE^CAT^NARR^QUAL1^QUAL2 (QUAL1=Primary!Qty, QUAL2=Prv) | 
|---|
| 102 | ;"Results: None | 
|---|
| 103 |  | 
|---|
| 104 | kill array | 
|---|
| 105 | new vIEN set vIEN=0 | 
|---|
| 106 | for  set vIEN=$order(^AUPNVSIT("C",DFN,vIEN)) quit:(+vIEN'>0)  do | 
|---|
| 107 | . new vDT set vDT=$piece($get(^AUPNVSIT(vIEN,0)),"^",1) | 
|---|
| 108 | . if vDT'>0 quit | 
|---|
| 109 | . new %Y,X,X1,X2 set X1=setDT,X2=vDT | 
|---|
| 110 | . do ^%DTC | 
|---|
| 111 | . if (X'=0)!(%Y=0) quit | 
|---|
| 112 | . new tempArray | 
|---|
| 113 | . do PCE4NOTE^ORWPCE3(.tempArray,,DFN,LocIEN_";"_vDT) | 
|---|
| 114 | . merge array(vDT)=tempArray | 
|---|
| 115 | quit | 
|---|
| 116 |  | 
|---|