- HMPDJ04 ;SLC/MKB,ASMR/RRB,ASF,PB - Appointments,Visits;May 24, 2016 15:21:17
- ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**2,3**;Sep 01, 2011;Build 15
- ;Per VA Directive 6402, this routine should not be modified.
- ;
- ; External References DBIA#
- ; ------------------- -----
- ; ^DGS(41.1 3796
- ; ^DIC(42 10039
- ; ^SC 10040
- ; ^VA(200 10060
- ; DIQ 2056
- ; ICPTCOD 1995
- ; ENCEVENT^PXKENC 1894 ;DE6363 - JD - 8/23/16
- ; SDAMA301 4433
- ; XLFDT 10103
- ; XUAF4 2171
- ; EDP(230 6275
- ; SC( 93
- ;
- ; All tags expect DFN, ID, [HMPSTART, HMPSTOP, HMPMAX, HMPTEXT]
- Q
- ;
- SDAM1 ; -- appointment ^TMP($J,"SDAMA301",DFN,HMPDT)
- N NODE,HLOC,APPT,X,STS,CLS,FAC,SV,PRV
- S NODE=$G(^TMP($J,"SDAMA301",DFN,HMPDT))
- N $ES,$ET,ERRPAT,ERRMSG
- S $ET="D ERRHDLR^HMPDERRH",ERRPAT=DFN
- S ERRMSG="A problem occurred converting a record for the appointment domain"
- ;
- S HLOC=$P(NODE,U,2),X="A;"_HMPDT_";"_+HLOC
- I $L($G(ID)),$P(ID,";",1,3)'=X Q
- S APPT("localId")=X,APPT("uid")=$$SETUID^HMPUTILS("appointment",DFN,X)
- S X=$P(NODE,U,10),APPT("typeCode")=$P(X,";"),APPT("typeName")=$P(X,";",2)
- S STS=$P(NODE,U,3),CLS=$S($E(STS)="I":"I",1:"O")
- S STS=$P($P(NODE,U,22),";",1,2) ;DE4469 - PB - APR 26, 2016 changed from using the SDAMA308 API to using the SDAMA301 Supported API to get appointment status ICR 4433
- S APPT("dateTime")=$$JSONDT^HMPUTILS(HMPDT)
- S:$L($P(NODE,U,6)) APPT("comment")=$P(NODE,U,6)
- S:$P(NODE,U,9) APPT("checkIn")=$$JSONDT^HMPUTILS($P(NODE,U,9))
- S:$P(NODE,U,11) APPT("checkOut")=$$JSONDT^HMPUTILS($P(NODE,U,11))
- I $L(ID,";")>3 S APPT("reasonName")=$P(ID,";",4),PRV=+$P(ID,";",5) ;from SDAM event
- S FAC=$$FAC^HMPD(+HLOC) D FACILITY^HMPUTILS(FAC,"APPT") I HLOC D
- . S APPT("locationName")=$P(HLOC,";",2)
- . S APPT("locationUid")=$$SETUID^HMPUTILS("location",,+HLOC)
- . S X=$$GET1^DIQ(44,(+HLOC)_",",1) S:X]"" APPT("shortLocationName")=X ;DE2818, (#1) ABBREVIATION
- . S X=$$AMIS^HMPDVSIT(+$P(NODE,U,13))
- . S:$L(X) APPT("stopCodeUid")="urn:va:stop-code:"_$P(X,U),APPT("stopCodeName")=$P(X,U,2)
- . S SV=$$GET1^DIQ(44,+HLOC_",",9.5,"I")
- . I SV S APPT("service")=$$SERV^HMPDSDAM(SV)
- . ;find default provider
- . S:'$G(PRV) PRV=+$$GET1^DIQ(44,+HLOC_",",16,"I") I 'PRV D
- .. N HMPP,I,FIRST
- .. D GETS^DIQ(44,+HLOC_",","2600*","I","HMPP")
- .. S FIRST=$O(HMPP(44.1,"")),I=""
- .. F S I=$O(HMPP(44.1,I)) Q:I="" I $G(HMPP(44.1,I,.02,"I")) S PRV=$G(HMPP(44.1,I,.01,"I")) Q
- .. I 'PRV,FIRST S PRV=$G(HMPP(44.1,FIRST,.01,"I"))
- I $G(PRV) S APPT("providers",1,"providerUid")=$$SETUID^HMPUTILS("user",,PRV),APPT("providers",1,"providerName")=$$GET1^DIQ(200,PRV_",",.01) ;DE2818
- S APPT("patientClassCode")="urn:va:patient-class:"_$S(CLS="I":"IMP",1:"AMB")
- S APPT("patientClassName")=$S(CLS="I":"Inpatient",1:"Ambulatory")
- S APPT("categoryCode")="urn:va:encounter-category:OV",APPT("categoryName")="Outpatient Visit"
- S APPT("appointmentStatus")=$P(STS,";",2)
- S APPT("lastUpdateTime")=$$EN^HMPSTMP("appointment") ;RHL 20150102
- S APPT("stampTime")=APPT("lastUpdateTime") ; RHL 20150102
- ;US6734 - pre-compile metastamp
- I $G(HMPMETA) D ADD^HMPMETA("appointment",APPT("uid"),APPT("stampTime")) Q:HMPMETA=1 ;US6734,US11019
- D ADD^HMPDJ("APPT","appointment")
- Q
- ;
- DGS ; scheduled admissions [from APPOINTM^HMPDJ0]
- ;DE2818, ^DGS(41.1) references ICR 3796
- S HMPA=0 F S HMPA=$O(^DGS(41.1,"B",DFN,HMPA)) Q:HMPA<1 D Q:HMPI'<HMPMAX
- . S HMPX=$G(^DGS(41.1,HMPA,0))
- . I $L($G(ID)),+$P(ID,";",2)=+$P(HMPX,U,2) D DGS1(HMPA) Q
- . Q:$P(HMPX,U,13) Q:$P(HMPX,U,17) ;cancelled or admitted
- . S X=$P(HMPX,U,2) Q:X<HMPSTART!(X>HMPSTOP) ;out of date range
- . D DGS1(HMPA)
- Q
- ;
- DGS1(IFN) ; -- scheduled admission
- N ADM,X0,DATE,HLOC,FAC,SV,X
- S X0=$G(^DGS(41.1,+$G(IFN),0)) Q:X0="" ;deleted (DE2818, ICR 3796)
- ;
- S DATE=+$P(X0,U,2),HLOC=+$$GET1^DIQ(42,+$P(X0,U,8)_",",.01) ;DE2818, ICR 10039
- S X="H;"_DATE,ADM("localId")=X,ADM("uid")=$$SETUID^HMPUTILS("appointment",DFN,X)
- S ADM("dateTime")=$$JSONDT^HMPUTILS(DATE)
- S FAC=$$FAC^HMPD(+HLOC) D FACILITY^HMPUTILS(FAC,"ADM") I HLOC D
- . S HLOC=$$GET1^DIQ(44,(+HLOC)_",",.01) ;DE2818, (#.01) NAME
- . S ADM("uid")=ADM("uid")_";"_+HLOC
- . S ADM("locationName")=$P(HLOC,";",2)
- . S X=$$GET1^DIQ(44,(+HLOC)_",",1) S:X]"" ADM("shortLocationName")=X ;DE2818, (#1) ABBREVIATION
- . S ADM("locationUid")=$$SETUID^HMPUTILS("location",,+HLOC)
- . S X=$$GET1^DIQ(44,+HLOC_",",8,"I"),X=$$AMIS^HMPDVSIT(X)
- . S:$L(X) ADM("stopCodeUid")="urn:va:stop-code:"_$P(X,U),ADM("stopCodeName")=$P(X,U,2)
- . S SV=$$GET1^DIQ(44,+HLOC_",",9.5,"I")
- . I SV S ADM("service")=$$SERV^HMPDSDAM(SV)
- S X=+$P(X0,U,5) I X D
- . S ADM("providers",1,"providerUid")=$$SETUID^HMPUTILS("user",,X)
- . S ADM("providers",1,"providerName")=$$GET1^DIQ(200,X_",",.01) ;DE2818
- S ADM("patientClassCode")="urn:va:patient-class:IMP",ADM("patientClassName")="Inpatient"
- S ADM("categoryCode")="urn:va:encounter-category:AD",ADM("categoryName")="Admission"
- S ADM("appointmentStatus")=$S($P(X0,U,17):"ADMITTED",$P(X0,U,13):"CANCELLED",1:"SCHEDULED")
- S ADM("lastUpdateTime")=$$EN^HMPSTMP("adm") ;RHL 20150102
- S ADM("stampTime")=ADM("lastUpdateTime") ; RHL 20150102
- ;US6734 - pre-compile metastamp
- I $G(HMPMETA) D ADD^HMPMETA("appointment",ADM("uid"),ADM("stampTime")) Q:HMPMETA=1 ;US6734,US11019
- D ADD^HMPDJ("ADM","appointment")
- Q
- ;
- VSIT1(ID) ; -- visit
- N VST,X0,X15,X,FAC,LOC,CATG,AMIS,INPT,DA,PS
- I $G(ID)?1"H"1.N D ADM^HMPDJ04A(ID) Q
- ;DE2818, ICR 6275
- I $D(^EDP(230,"V",ID)),$L($T(EDP1^HMPDJ04E)) D EDP1^HMPDJ04E(ID) Q
- ; ENCEVENT^PXAPI(ID)
- ;
- ; DE2818, ^AUPNVSIT - ICR 2028
- S X0=$G(^AUPNVSIT(ID,0)),X15=$G(^(150)) Q:X0="" ;pjh - quit if visit already deleted
- ; X0=$G(^TMP("PXKENC",$J,ID,"VST",ID,0)),X15=$G(^(150))
- ;Q:$P(X15,U,3)'="P" Q:$P(X0,U,7)="E" Q:$P(X0,U,12) ;primary, not historical or child
- I $P(X0,U,7)="H" D ADM^HMPDJ04A(ID,+X0) Q
- S VST("localId")=ID,VST("uid")=$$SETUID^HMPUTILS("visit",DFN,ID)
- S VST("dateTime")=$$JSONDT^HMPUTILS(+X0) ;(#.01) VISIT/ADMIT DATE&TIME
- S:$P(X0,U,18) VST("checkOut")=$$JSONDT^HMPUTILS($P(X0,U,18)) ;(#.18) CHECK OUT DATE&TIME
- S:$P(X0,U,12) VST("parentUid")=$$SETUID^HMPUTILS("visit",DFN,$P(X0,U,12)) ;(#.12) PARENT VISIT LINK
- ;(#.06) LOC. OF ENCOUNTER, (#.07) SERVICE CATEGORY, (#.22) HOSPITAL LOCATION
- S FAC=+$P(X0,U,6),CATG=$P(X0,U,7),LOC=+$P(X0,U,22)
- S:FAC X=$$STA^XUAF4(FAC)_U_$P($$NS^XUAF4(FAC),U)
- S:'FAC X=$$FAC^HMPD(LOC) D FACILITY^HMPUTILS(X,"VST")
- S X=$S(CATG="H":"AD",CATG="C":"CR",CATG="T":"TC",CATG="N":"U",CATG="R":"NH","D^X"[CATG:"O",1:"OV")
- S VST("categoryCode")="urn:va:encounter-category:"_X
- S VST("categoryName")=$S(X="AD":"Admission",X="CR":"Chart Review",X="TC":"Phone Contact",X="U":"Unknown",X="NH":"Nursing Home",X="O":"Other",1:"Outpatient Visit")
- S INPT=$P(X15,U,2) S:INPT="" INPT=$S("H^I^R^D"[CATG:1,1:0) ;(#15002) PATIENT STATUS IN/OUT
- S X=$P(X15,U,3) S:$L(X) VST("encounterType")=X ;(#15003) ENCOUNTER TYPE
- S X=$$CPT(ID) S:X VST("typeName")=$P($$CPT^ICPTCOD(X),U,3)
- I 'X S VST("typeName")=$S('INPT&LOC:$$GET1^DIQ(44,LOC_",",.01)_" VISIT",1:$$CATG^HMPDVSIT(CATG)) ;DE2818
- S VST("patientClassCode")="urn:va:patient-class:"_$S(INPT:"IMP",1:"AMB")
- S VST("patientClassName")=$S(INPT:"Inpatient",1:"Ambulatory")
- ; US12589 - add createdByName field to extract
- S X=$$GET1^DIQ(200,$P(X0,U,23)_",",".01") S:$G(X)="" X="UNKNOWN"
- S VST("createdByName")=X
- ;(#.08) DSS ID
- S X=$P(X0,U,8) S:X AMIS=$$AMIS^HMPDVSIT(X) I LOC D
- . I 'X N AMISARR D GETS^DIQ(44,LOC_",",8,"I","AMISARR","ERR") I $G(AMISARR(44,LOC_",",8,"I"))'="" S X=$G(AMISARR(44,LOC_",",8,"I")),AMIS=$$AMIS^HMPDVSIT(X) ;DE5300 - PB - Jun 30 2015 changed call to get stop code name and number
- . S VST("locationUid")=$$SETUID^HMPUTILS("location",,+LOC)
- . S X=$$GET1^DIQ(44,LOC_",",1) S:X]"" VST("shortLocationName")=X ;DE2818, (#1) ABBREVIATION
- . S VST("locationName")=$$GET1^DIQ(44,LOC_",",.01) ;DE2818, (#.01) NAME
- . S VST("locationOos")=$S($$GET1^DIQ(44,LOC_",",50.01,"I"):"true",1:"false") ;DE2818, (#50.01) OCCASION OF SERVICE CLINIC?
- . S X=$$SERV^HMPDVSIT($$GET1^DIQ(44,LOC_",",9.5,"I")) S:$L(X) VST("service")=X ;DE2818, (#9.5) TREATING SPECIALTY
- S:$D(AMIS) VST("stopCodeUid")="urn:va:stop-code:"_$P(AMIS,U),VST("stopCodeName")=$P(AMIS,U,2)
- S X=$$POV(ID) S:$L(X) VST("reasonUid")=$$SETNCS^HMPUTILS("icd",$P(X,U)),VST("reasonName")=$P(X,U,2)
- ; provider(s), DE2818 - ^AUPNVPRV references - ICR 2316
- S DA=0 F S DA=$O(^AUPNVPRV("AD",ID,DA)) Q:DA<1 D
- . S X0=$G(^AUPNVPRV(DA,0))
- . I $P(X0,U,4)="P" D PROV("VST",DA,+X0,"P",1) Q ;primary
- . D:'$D(PS(+X0)) PROV("VST",DA,+X0,"S") ;secondary
- . S PS(+X0)="" ; (no duplicates)
- K ^TMP("PXKENC",$J,ID)
- S VST("lastUpdateTime")=$$EN^HMPSTMP("visit") ;RHL 20150103
- S VST("stampTime")=VST("lastUpdateTime") ; RHL 20150103
- ;US6734 - pre-compile metastamp
- I $G(HMPMETA) D ADD^HMPMETA("visit",VST("uid"),VST("stampTime")) Q:HMPMETA=1 ;US6734,US11019
- D ADD^HMPDJ("VST","visit")
- Q
- ;
- CPT(VISIT) ; -- Return CPT code of encounter type
- ;DE2818 - Change to use API and not directly access the global
- N DA,Y S Y=""
- ;DE4198 - remove use of ^AUPNVCPT
- D ENCEVENT^PXKENC(VISIT,1) ;ICR 1894
- S DA=0 F S DA=$O(^TMP("PXKENC",$J,VISIT,"CPT",DA)) Q:DA<1 D Q:$L(Y)
- . I +$G(^TMP("PXKENC",$J,VISIT,"CPT",DA,0))?1"992"2N S Y=+$G(^TMP("PXKENC",$J,VISIT,"CPT",DA,0))
- Q Y
- ;
- POV(VISIT) ; -- return the primary Purpose of Visit as ICD^ProviderNarrative
- N DA,Y,X,X0,ICD S Y=""
- ;DE2818, ^AUPNVPOV( - ICR 3094
- S DA=0 F S DA=$O(^AUPNVPOV("AD",VISIT,DA)) Q:DA<1 D Q:$L(Y)
- . S X0=$G(^AUPNVPOV(DA,0)) Q:$P(X0,U,12)'="P"
- . S X=+$P(X0,U,4),ICD=$$ICD^HMPDVSIT(+X0)
- . S Y=ICD_U_$$EXTERNAL^DILFD(9000010.07,.04,,X)
- Q Y
- ;
- PROV(ARR,I,IEN,ROLE,PRIM) ; -- add providers
- S @ARR@("providers",I,"providerUid")=$$SETUID^HMPUTILS("user",,+IEN)
- S @ARR@("providers",I,"providerName")=$$GET1^DIQ(200,(+IEN)_",",.01) ;DE2818
- S @ARR@("providers",I,"role")=ROLE
- S:$G(PRIM) @ARR@("providers",I,"primary")="true"
- Q
- ;
- NAME(IEN) ; -- Return a string 'name' for the visit
- N Y,X0,LOC,DATE
- S X0=$G(^AUPNVSIT(+$G(IEN),0)),Y="" ;DE2818, ICR 2028
- S DATE=+X0,LOC=+$P(X0,U,22) S:LOC LOC=$$GET1^DIQ(44,LOC_",",.01)_" " ;DE2818
- S Y=LOC_$$FMTE^XLFDT(DATE,"1D") ;Mon DD, YYYY
- Q Y
- ;
- FAC(IEN) ; -- Return Facility for the visit
- Q:'+$G(IEN) ""
- N FAC S FAC=+$$GET1^DIQ(9000010,IEN_",",.06,"I")
- Q:FAC $$STA^XUAF4(FAC)_U_$P($$NS^XUAF4(FAC),U)
- S FAC=+$$GET1^DIQ(9000010,IEN_",",.22,"I")
- Q $$FAC^HMPD(FAC)
- ;
- STCODE(IEN) ; -- Return stop code information for the visit Q:'+$G(IEN) ""
- Q:'+$G(IEN) ""
- N STCODE,LIEN S STCODE=+$$GET1^DIQ(9000010,IEN_",",.08,"I")
- Q:STCODE $$AMIS^HMPDVSIT(STCODE)
- S LIEN=+$$GET1^DIQ(9000010,IEN_",",.22,"I")
- I LIEN S STCODE=+$$GET1^DIQ(44,LIEN_",",8,"I")
- Q:STCODE $$AMIS^HMPDVSIT(STCODE)
- Q ""
- ;
- STOPCODE(X,Y) ; -- Return stop code info for JSON
- S @Y@("stopCodeUid")="urn:va:stop-code:"_$P(X,U)
- S @Y@("stopCodeName")=$P(X,U,2)
- Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHMPDJ04 11295 printed Feb 18, 2025@23:19:41 Page 2
- HMPDJ04 ;SLC/MKB,ASMR/RRB,ASF,PB - Appointments,Visits;May 24, 2016 15:21:17
- +1 ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**2,3**;Sep 01, 2011;Build 15
- +2 ;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- +4 ; External References DBIA#
- +5 ; ------------------- -----
- +6 ; ^DGS(41.1 3796
- +7 ; ^DIC(42 10039
- +8 ; ^SC 10040
- +9 ; ^VA(200 10060
- +10 ; DIQ 2056
- +11 ; ICPTCOD 1995
- +12 ; ENCEVENT^PXKENC 1894 ;DE6363 - JD - 8/23/16
- +13 ; SDAMA301 4433
- +14 ; XLFDT 10103
- +15 ; XUAF4 2171
- +16 ; EDP(230 6275
- +17 ; SC( 93
- +18 ;
- +19 ; All tags expect DFN, ID, [HMPSTART, HMPSTOP, HMPMAX, HMPTEXT]
- +20 QUIT
- +21 ;
- SDAM1 ; -- appointment ^TMP($J,"SDAMA301",DFN,HMPDT)
- +1 NEW NODE,HLOC,APPT,X,STS,CLS,FAC,SV,PRV
- +2 SET NODE=$GET(^TMP($JOB,"SDAMA301",DFN,HMPDT))
- +3 NEW $ESTACK,$ETRAP,ERRPAT,ERRMSG
- +4 SET $ETRAP="D ERRHDLR^HMPDERRH"
- SET ERRPAT=DFN
- +5 SET ERRMSG="A problem occurred converting a record for the appointment domain"
- +6 ;
- +7 SET HLOC=$PIECE(NODE,U,2)
- SET X="A;"_HMPDT_";"_+HLOC
- +8 IF $LENGTH($GET(ID))
- IF $PIECE(ID,";",1,3)'=X
- QUIT
- +9 SET APPT("localId")=X
- SET APPT("uid")=$$SETUID^HMPUTILS("appointment",DFN,X)
- +10 SET X=$PIECE(NODE,U,10)
- SET APPT("typeCode")=$PIECE(X,";")
- SET APPT("typeName")=$PIECE(X,";",2)
- +11 SET STS=$PIECE(NODE,U,3)
- SET CLS=$SELECT($EXTRACT(STS)="I":"I",1:"O")
- +12 ;DE4469 - PB - APR 26, 2016 changed from using the SDAMA308 API to using the SDAMA301 Supported API to get appointment status ICR 4433
- SET STS=$PIECE($PIECE(NODE,U,22),";",1,2)
- +13 SET APPT("dateTime")=$$JSONDT^HMPUTILS(HMPDT)
- +14 if $LENGTH($PIECE(NODE,U,6))
- SET APPT("comment")=$PIECE(NODE,U,6)
- +15 if $PIECE(NODE,U,9)
- SET APPT("checkIn")=$$JSONDT^HMPUTILS($PIECE(NODE,U,9))
- +16 if $PIECE(NODE,U,11)
- SET APPT("checkOut")=$$JSONDT^HMPUTILS($PIECE(NODE,U,11))
- +17 ;from SDAM event
- IF $LENGTH(ID,";")>3
- SET APPT("reasonName")=$PIECE(ID,";",4)
- SET PRV=+$PIECE(ID,";",5)
- +18 SET FAC=$$FAC^HMPD(+HLOC)
- DO FACILITY^HMPUTILS(FAC,"APPT")
- IF HLOC
- Begin DoDot:1
- +19 SET APPT("locationName")=$PIECE(HLOC,";",2)
- +20 SET APPT("locationUid")=$$SETUID^HMPUTILS("location",,+HLOC)
- +21 ;DE2818, (#1) ABBREVIATION
- SET X=$$GET1^DIQ(44,(+HLOC)_",",1)
- if X]""
- SET APPT("shortLocationName")=X
- +22 SET X=$$AMIS^HMPDVSIT(+$PIECE(NODE,U,13))
- +23 if $LENGTH(X)
- SET APPT("stopCodeUid")="urn:va:stop-code:"_$PIECE(X,U)
- SET APPT("stopCodeName")=$PIECE(X,U,2)
- +24 SET SV=$$GET1^DIQ(44,+HLOC_",",9.5,"I")
- +25 IF SV
- SET APPT("service")=$$SERV^HMPDSDAM(SV)
- +26 ;find default provider
- +27 if '$GET(PRV)
- SET PRV=+$$GET1^DIQ(44,+HLOC_",",16,"I")
- IF 'PRV
- Begin DoDot:2
- +28 NEW HMPP,I,FIRST
- +29 DO GETS^DIQ(44,+HLOC_",","2600*","I","HMPP")
- +30 SET FIRST=$ORDER(HMPP(44.1,""))
- SET I=""
- +31 FOR
- SET I=$ORDER(HMPP(44.1,I))
- if I=""
- QUIT
- IF $GET(HMPP(44.1,I,.02,"I"))
- SET PRV=$GET(HMPP(44.1,I,.01,"I"))
- QUIT
- +32 IF 'PRV
- IF FIRST
- SET PRV=$GET(HMPP(44.1,FIRST,.01,"I"))
- End DoDot:2
- End DoDot:1
- +33 ;DE2818
- IF $GET(PRV)
- SET APPT("providers",1,"providerUid")=$$SETUID^HMPUTILS("user",,PRV)
- SET APPT("providers",1,"providerName")=$$GET1^DIQ(200,PRV_",",.01)
- +34 SET APPT("patientClassCode")="urn:va:patient-class:"_$SELECT(CLS="I":"IMP",1:"AMB")
- +35 SET APPT("patientClassName")=$SELECT(CLS="I":"Inpatient",1:"Ambulatory")
- +36 SET APPT("categoryCode")="urn:va:encounter-category:OV"
- SET APPT("categoryName")="Outpatient Visit"
- +37 SET APPT("appointmentStatus")=$PIECE(STS,";",2)
- +38 ;RHL 20150102
- SET APPT("lastUpdateTime")=$$EN^HMPSTMP("appointment")
- +39 ; RHL 20150102
- SET APPT("stampTime")=APPT("lastUpdateTime")
- +40 ;US6734 - pre-compile metastamp
- +41 ;US6734,US11019
- IF $GET(HMPMETA)
- DO ADD^HMPMETA("appointment",APPT("uid"),APPT("stampTime"))
- if HMPMETA=1
- QUIT
- +42 DO ADD^HMPDJ("APPT","appointment")
- +43 QUIT
- +44 ;
- DGS ; scheduled admissions [from APPOINTM^HMPDJ0]
- +1 ;DE2818, ^DGS(41.1) references ICR 3796
- +2 SET HMPA=0
- FOR
- SET HMPA=$ORDER(^DGS(41.1,"B",DFN,HMPA))
- if HMPA<1
- QUIT
- Begin DoDot:1
- +3 SET HMPX=$GET(^DGS(41.1,HMPA,0))
- +4 IF $LENGTH($GET(ID))
- IF +$PIECE(ID,";",2)=+$PIECE(HMPX,U,2)
- DO DGS1(HMPA)
- QUIT
- +5 ;cancelled or admitted
- if $PIECE(HMPX,U,13)
- QUIT
- if $PIECE(HMPX,U,17)
- QUIT
- +6 ;out of date range
- SET X=$PIECE(HMPX,U,2)
- if X<HMPSTART!(X>HMPSTOP)
- QUIT
- +7 DO DGS1(HMPA)
- End DoDot:1
- if HMPI'<HMPMAX
- QUIT
- +8 QUIT
- +9 ;
- DGS1(IFN) ; -- scheduled admission
- +1 NEW ADM,X0,DATE,HLOC,FAC,SV,X
- +2 ;deleted (DE2818, ICR 3796)
- SET X0=$GET(^DGS(41.1,+$GET(IFN),0))
- if X0=""
- QUIT
- +3 ;
- +4 ;DE2818, ICR 10039
- SET DATE=+$PIECE(X0,U,2)
- SET HLOC=+$$GET1^DIQ(42,+$PIECE(X0,U,8)_",",.01)
- +5 SET X="H;"_DATE
- SET ADM("localId")=X
- SET ADM("uid")=$$SETUID^HMPUTILS("appointment",DFN,X)
- +6 SET ADM("dateTime")=$$JSONDT^HMPUTILS(DATE)
- +7 SET FAC=$$FAC^HMPD(+HLOC)
- DO FACILITY^HMPUTILS(FAC,"ADM")
- IF HLOC
- Begin DoDot:1
- +8 ;DE2818, (#.01) NAME
- SET HLOC=$$GET1^DIQ(44,(+HLOC)_",",.01)
- +9 SET ADM("uid")=ADM("uid")_";"_+HLOC
- +10 SET ADM("locationName")=$PIECE(HLOC,";",2)
- +11 ;DE2818, (#1) ABBREVIATION
- SET X=$$GET1^DIQ(44,(+HLOC)_",",1)
- if X]""
- SET ADM("shortLocationName")=X
- +12 SET ADM("locationUid")=$$SETUID^HMPUTILS("location",,+HLOC)
- +13 SET X=$$GET1^DIQ(44,+HLOC_",",8,"I")
- SET X=$$AMIS^HMPDVSIT(X)
- +14 if $LENGTH(X)
- SET ADM("stopCodeUid")="urn:va:stop-code:"_$PIECE(X,U)
- SET ADM("stopCodeName")=$PIECE(X,U,2)
- +15 SET SV=$$GET1^DIQ(44,+HLOC_",",9.5,"I")
- +16 IF SV
- SET ADM("service")=$$SERV^HMPDSDAM(SV)
- End DoDot:1
- +17 SET X=+$PIECE(X0,U,5)
- IF X
- Begin DoDot:1
- +18 SET ADM("providers",1,"providerUid")=$$SETUID^HMPUTILS("user",,X)
- +19 ;DE2818
- SET ADM("providers",1,"providerName")=$$GET1^DIQ(200,X_",",.01)
- End DoDot:1
- +20 SET ADM("patientClassCode")="urn:va:patient-class:IMP"
- SET ADM("patientClassName")="Inpatient"
- +21 SET ADM("categoryCode")="urn:va:encounter-category:AD"
- SET ADM("categoryName")="Admission"
- +22 SET ADM("appointmentStatus")=$SELECT($PIECE(X0,U,17):"ADMITTED",$PIECE(X0,U,13):"CANCELLED",1:"SCHEDULED")
- +23 ;RHL 20150102
- SET ADM("lastUpdateTime")=$$EN^HMPSTMP("adm")
- +24 ; RHL 20150102
- SET ADM("stampTime")=ADM("lastUpdateTime")
- +25 ;US6734 - pre-compile metastamp
- +26 ;US6734,US11019
- IF $GET(HMPMETA)
- DO ADD^HMPMETA("appointment",ADM("uid"),ADM("stampTime"))
- if HMPMETA=1
- QUIT
- +27 DO ADD^HMPDJ("ADM","appointment")
- +28 QUIT
- +29 ;
- VSIT1(ID) ; -- visit
- +1 NEW VST,X0,X15,X,FAC,LOC,CATG,AMIS,INPT,DA,PS
- +2 IF $GET(ID)?1"H"1.N
- DO ADM^HMPDJ04A(ID)
- QUIT
- +3 ;DE2818, ICR 6275
- +4 IF $DATA(^EDP(230,"V",ID))
- IF $LENGTH($TEXT(EDP1^HMPDJ04E))
- DO EDP1^HMPDJ04E(ID)
- QUIT
- +5 ; ENCEVENT^PXAPI(ID)
- +6 ;
- +7 ; DE2818, ^AUPNVSIT - ICR 2028
- +8 ;pjh - quit if visit already deleted
- SET X0=$GET(^AUPNVSIT(ID,0))
- SET X15=$GET(^(150))
- if X0=""
- QUIT
- +9 ; X0=$G(^TMP("PXKENC",$J,ID,"VST",ID,0)),X15=$G(^(150))
- +10 ;Q:$P(X15,U,3)'="P" Q:$P(X0,U,7)="E" Q:$P(X0,U,12) ;primary, not historical or child
- +11 IF $PIECE(X0,U,7)="H"
- DO ADM^HMPDJ04A(ID,+X0)
- QUIT
- +12 SET VST("localId")=ID
- SET VST("uid")=$$SETUID^HMPUTILS("visit",DFN,ID)
- +13 ;(#.01) VISIT/ADMIT DATE&TIME
- SET VST("dateTime")=$$JSONDT^HMPUTILS(+X0)
- +14 ;(#.18) CHECK OUT DATE&TIME
- if $PIECE(X0,U,18)
- SET VST("checkOut")=$$JSONDT^HMPUTILS($PIECE(X0,U,18))
- +15 ;(#.12) PARENT VISIT LINK
- if $PIECE(X0,U,12)
- SET VST("parentUid")=$$SETUID^HMPUTILS("visit",DFN,$PIECE(X0,U,12))
- +16 ;(#.06) LOC. OF ENCOUNTER, (#.07) SERVICE CATEGORY, (#.22) HOSPITAL LOCATION
- +17 SET FAC=+$PIECE(X0,U,6)
- SET CATG=$PIECE(X0,U,7)
- SET LOC=+$PIECE(X0,U,22)
- +18 if FAC
- SET X=$$STA^XUAF4(FAC)_U_$PIECE($$NS^XUAF4(FAC),U)
- +19 if 'FAC
- SET X=$$FAC^HMPD(LOC)
- DO FACILITY^HMPUTILS(X,"VST")
- +20 SET X=$SELECT(CATG="H":"AD",CATG="C":"CR",CATG="T":"TC",CATG="N":"U",CATG="R":"NH","D^X"[CATG:"O",1:"OV")
- +21 SET VST("categoryCode")="urn:va:encounter-category:"_X
- +22 SET VST("categoryName")=$SELECT(X="AD":"Admission",X="CR":"Chart Review",X="TC":"Phone Contact",X="U":"Unknown",X="NH":"Nursing Home",X="O":"Other",1:"Outpatient Visit")
- +23 ;(#15002) PATIENT STATUS IN/OUT
- SET INPT=$PIECE(X15,U,2)
- if INPT=""
- SET INPT=$SELECT("H^I^R^D"[CATG:1,1:0)
- +24 ;(#15003) ENCOUNTER TYPE
- SET X=$PIECE(X15,U,3)
- if $LENGTH(X)
- SET VST("encounterType")=X
- +25 SET X=$$CPT(ID)
- if X
- SET VST("typeName")=$PIECE($$CPT^ICPTCOD(X),U,3)
- +26 ;DE2818
- IF 'X
- SET VST("typeName")=$SELECT('INPT&LOC:$$GET1^DIQ(44,LOC_",",.01)_" VISIT",1:$$CATG^HMPDVSIT(CATG))
- +27 SET VST("patientClassCode")="urn:va:patient-class:"_$SELECT(INPT:"IMP",1:"AMB")
- +28 SET VST("patientClassName")=$SELECT(INPT:"Inpatient",1:"Ambulatory")
- +29 ; US12589 - add createdByName field to extract
- +30 SET X=$$GET1^DIQ(200,$PIECE(X0,U,23)_",",".01")
- if $GET(X)=""
- SET X="UNKNOWN"
- +31 SET VST("createdByName")=X
- +32 ;(#.08) DSS ID
- +33 SET X=$PIECE(X0,U,8)
- if X
- SET AMIS=$$AMIS^HMPDVSIT(X)
- IF LOC
- Begin DoDot:1
- +34 ;DE5300 - PB - Jun 30 2015 changed call to get stop code name and number
- IF 'X
- NEW AMISARR
- DO GETS^DIQ(44,LOC_",",8,"I","AMISARR","ERR")
- IF $GET(AMISARR(44,LOC_",",8,"I"))'=""
- SET X=$GET(AMISARR(44,LOC_",",8,"I"))
- SET AMIS=$$AMIS^HMPDVSIT(X)
- +35 SET VST("locationUid")=$$SETUID^HMPUTILS("location",,+LOC)
- +36 ;DE2818, (#1) ABBREVIATION
- SET X=$$GET1^DIQ(44,LOC_",",1)
- if X]""
- SET VST("shortLocationName")=X
- +37 ;DE2818, (#.01) NAME
- SET VST("locationName")=$$GET1^DIQ(44,LOC_",",.01)
- +38 ;DE2818, (#50.01) OCCASION OF SERVICE CLINIC?
- SET VST("locationOos")=$SELECT($$GET1^DIQ(44,LOC_",",50.01,"I"):"true",1:"false")
- +39 ;DE2818, (#9.5) TREATING SPECIALTY
- SET X=$$SERV^HMPDVSIT($$GET1^DIQ(44,LOC_",",9.5,"I"))
- if $LENGTH(X)
- SET VST("service")=X
- End DoDot:1
- +40 if $DATA(AMIS)
- SET VST("stopCodeUid")="urn:va:stop-code:"_$PIECE(AMIS,U)
- SET VST("stopCodeName")=$PIECE(AMIS,U,2)
- +41 SET X=$$POV(ID)
- if $LENGTH(X)
- SET VST("reasonUid")=$$SETNCS^HMPUTILS("icd",$PIECE(X,U))
- SET VST("reasonName")=$PIECE(X,U,2)
- +42 ; provider(s), DE2818 - ^AUPNVPRV references - ICR 2316
- +43 SET DA=0
- FOR
- SET DA=$ORDER(^AUPNVPRV("AD",ID,DA))
- if DA<1
- QUIT
- Begin DoDot:1
- +44 SET X0=$GET(^AUPNVPRV(DA,0))
- +45 ;primary
- IF $PIECE(X0,U,4)="P"
- DO PROV("VST",DA,+X0,"P",1)
- QUIT
- +46 ;secondary
- if '$DATA(PS(+X0))
- DO PROV("VST",DA,+X0,"S")
- +47 ; (no duplicates)
- SET PS(+X0)=""
- End DoDot:1
- +48 KILL ^TMP("PXKENC",$JOB,ID)
- +49 ;RHL 20150103
- SET VST("lastUpdateTime")=$$EN^HMPSTMP("visit")
- +50 ; RHL 20150103
- SET VST("stampTime")=VST("lastUpdateTime")
- +51 ;US6734 - pre-compile metastamp
- +52 ;US6734,US11019
- IF $GET(HMPMETA)
- DO ADD^HMPMETA("visit",VST("uid"),VST("stampTime"))
- if HMPMETA=1
- QUIT
- +53 DO ADD^HMPDJ("VST","visit")
- +54 QUIT
- +55 ;
- CPT(VISIT) ; -- Return CPT code of encounter type
- +1 ;DE2818 - Change to use API and not directly access the global
- +2 NEW DA,Y
- SET Y=""
- +3 ;DE4198 - remove use of ^AUPNVCPT
- +4 ;ICR 1894
- DO ENCEVENT^PXKENC(VISIT,1)
- +5 SET DA=0
- FOR
- SET DA=$ORDER(^TMP("PXKENC",$JOB,VISIT,"CPT",DA))
- if DA<1
- QUIT
- Begin DoDot:1
- +6 IF +$GET(^TMP("PXKENC",$JOB,VISIT,"CPT",DA,0))?1"992"2N
- SET Y=+$GET(^TMP("PXKENC",$JOB,VISIT,"CPT",DA,0))
- End DoDot:1
- if $LENGTH(Y)
- QUIT
- +7 QUIT Y
- +8 ;
- POV(VISIT) ; -- return the primary Purpose of Visit as ICD^ProviderNarrative
- +1 NEW DA,Y,X,X0,ICD
- SET Y=""
- +2 ;DE2818, ^AUPNVPOV( - ICR 3094
- +3 SET DA=0
- FOR
- SET DA=$ORDER(^AUPNVPOV("AD",VISIT,DA))
- if DA<1
- QUIT
- Begin DoDot:1
- +4 SET X0=$GET(^AUPNVPOV(DA,0))
- if $PIECE(X0,U,12)'="P"
- QUIT
- +5 SET X=+$PIECE(X0,U,4)
- SET ICD=$$ICD^HMPDVSIT(+X0)
- +6 SET Y=ICD_U_$$EXTERNAL^DILFD(9000010.07,.04,,X)
- End DoDot:1
- if $LENGTH(Y)
- QUIT
- +7 QUIT Y
- +8 ;
- PROV(ARR,I,IEN,ROLE,PRIM) ; -- add providers
- +1 SET @ARR@("providers",I,"providerUid")=$$SETUID^HMPUTILS("user",,+IEN)
- +2 ;DE2818
- SET @ARR@("providers",I,"providerName")=$$GET1^DIQ(200,(+IEN)_",",.01)
- +3 SET @ARR@("providers",I,"role")=ROLE
- +4 if $GET(PRIM)
- SET @ARR@("providers",I,"primary")="true"
- +5 QUIT
- +6 ;
- NAME(IEN) ; -- Return a string 'name' for the visit
- +1 NEW Y,X0,LOC,DATE
- +2 ;DE2818, ICR 2028
- SET X0=$GET(^AUPNVSIT(+$GET(IEN),0))
- SET Y=""
- +3 ;DE2818
- SET DATE=+X0
- SET LOC=+$PIECE(X0,U,22)
- if LOC
- SET LOC=$$GET1^DIQ(44,LOC_",",.01)_" "
- +4 ;Mon DD, YYYY
- SET Y=LOC_$$FMTE^XLFDT(DATE,"1D")
- +5 QUIT Y
- +6 ;
- FAC(IEN) ; -- Return Facility for the visit
- +1 if '+$GET(IEN)
- QUIT ""
- +2 NEW FAC
- SET FAC=+$$GET1^DIQ(9000010,IEN_",",.06,"I")
- +3 if FAC
- QUIT $$STA^XUAF4(FAC)_U_$PIECE($$NS^XUAF4(FAC),U)
- +4 SET FAC=+$$GET1^DIQ(9000010,IEN_",",.22,"I")
- +5 QUIT $$FAC^HMPD(FAC)
- +6 ;
- STCODE(IEN) ; -- Return stop code information for the visit Q:'+$G(IEN) ""
- +1 if '+$GET(IEN)
- QUIT ""
- +2 NEW STCODE,LIEN
- SET STCODE=+$$GET1^DIQ(9000010,IEN_",",.08,"I")
- +3 if STCODE
- QUIT $$AMIS^HMPDVSIT(STCODE)
- +4 SET LIEN=+$$GET1^DIQ(9000010,IEN_",",.22,"I")
- +5 IF LIEN
- SET STCODE=+$$GET1^DIQ(44,LIEN_",",8,"I")
- +6 if STCODE
- QUIT $$AMIS^HMPDVSIT(STCODE)
- +7 QUIT ""
- +8 ;
- STOPCODE(X,Y) ; -- Return stop code info for JSON
- +1 SET @Y@("stopCodeUid")="urn:va:stop-code:"_$PIECE(X,U)
- +2 SET @Y@("stopCodeName")=$PIECE(X,U,2)
- +3 QUIT
- +4 ;