YSCLHLAD ;DSS/PO-CLOZAPINE DATA TRANSMISSION-Messaging-ADT ;19 May 2020 14:13:48
 ;;5.01;MENTAL HEALTH;**149**;Dec 30, 1994;Build 72
 Q
 ;
 ; Reference to ^%ZTER supported by DBIA #1621
 ; Reference to ^DICRW supported by DBIA #10005
 ; Reference to ^DIQ supported by DBIA #2056
 ; References to ^HLOAPI supported by DBIA #4716
 ; References to HLOAPI1 supported by DBIA #4717
 ;
ADTA28(YSCLARR,YSILENT) ; Build and send registration message
 ; input:   YSCLARR   data array to build HL7 segments
 ;
 ; APPARMS - HLO application parameters
 ; HL - delimiters for HL7 utilities
 ; HL7RES - Hl7 send result, 0 if message not sent
 ; HLMSTATE - message state for HLO
 ; SEG - segment for HLO
 ; YSCLDEST - destination name for HLO
 ; YSHLERR - message creation error
 ; YSWHTO - destination for HLO
 ;
 N APPARMS,HL,HL7RES,HLMSTATE,SEG,YSCLDEST,YSHLERR,YSWHTO
 ;
 ; create message
 S APPARMS("MESSAGE TYPE")="ADT"
 S APPARMS("EVENT")="A28"
 S APPARMS("MESSAGE STRUCTURE")="ADT_A05"
 S APPARMS("VERSION")="2.5.1"
 I '$$NEWMSG^HLOAPI(.APPARMS,.HLMSTATE,.YSHLERR) U IO W !,$G(YSHLERR) Q
 ;
 ; create EVN segment
 D SET^HLOAPI(.SEG,"EVN",0)
 D SET^HLOAPI(.SEG,$$FMTHL7^XLFDT($$NOW^XLFDT),2)
 Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
 ;
 D PID^YSCLHLPD(.SEG,.YSCLARR)    ;creat PID segment
 Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
 ;
 ; create ROL segment
 D SET^HLOAPI(.SEG,"ROL",0)
 D SET^HLOAPI(.SEG,"UP",2) ; update
 D SET^HLOAPI(.SEG,"PRX",3)
 D SET^HLOAPI(.SEG,"HL70443",3,3)
 D SET^HLOAPI(.SEG,"Prescribing Physician",3,2)
 ;
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_DEA"),4,1,1,1)
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_LAST NAME"),4,2,1,1)
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_FIRST NAME"),4,3,1,1)
 D SET^HLOAPI(.SEG,"DEA",4,13,1,1)
 ;
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_NPI"),4,1,1,2)
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_LAST NAME"),4,2,1,2)
 D SET^HLOAPI(.SEG,YSCLARR("PROVIDER_FIRST NAME"),4,3,1,2)
 D SET^HLOAPI(.SEG,"NPI",4,13,1,2)
 Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)    ; "ROL" segment
 ;
 ; create PV1 segment
 D SET^HLOAPI(.SEG,"PV1",0)
 D SET^HLOAPI(.SEG,YSCLARR("PATIENT_INPAT/OUTPAT"),2)
 Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)    ; "PV1" segment
 ;
 ; create OBX segment for clozapine status
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)   ;"OBX|1|..."
 . N SEGSEQ S SEGSEQ=1
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1) ; sequence id
 . D SET^HLOAPI(.SEG,"CE",2)   ; value type
 . D SET^HLOAPI(.SEG,"PTSTAT",3,2) ; observation ID
 . D SET^HLOAPI(.SEG,YSCLARR("PATIENT_CLOZ STATUS"),5) ; patient status
 . D SET^HLOAPI(.SEG,"F",11) ; observation result status -  "F" means Final Results   
 ;
 ; create OBX segment for dispense frequency
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)  ;"OBX|2|..."
 . N SEGSEQ S SEGSEQ=2
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1)  ; sequence id
 . D SET^HLOAPI(.SEG,"CE",2)   ; value type
 . D SET^HLOAPI(.SEG,"DISPENSE FREQUENCY",3,2) ; observation ID
 . D SET^HLOAPI(.SEG,YSCLARR("LAB_FREQ"),5) ;   
 . D SET^HLOAPI(.SEG,"F",11) ; observation result status, "F" means Final Results 
 . Q
 ;
 ; create OBX segment for WBC
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)      ;"OBX|3|..."
 . N SEGSEQ S SEGSEQ=3
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1)  ; sequence ID
 . D SET^HLOAPI(.SEG,"CE",2)   ; value type
 . D SET^HLOAPI(.SEG,"WBC",3,2)  ; observation ID
 . D SET^HLOAPI(.SEG,YSCLARR("LAB_WBC VAL"),5) ; WBC  value
 . D SET^HLOAPI(.SEG,"F",11) ; observation result status, "F" means Final Results 
 . ;ajf ; Don't set date if wbc value is null
 . I $G(YSCLARR("LAB_WBC VAL")) D SET^HLOAPI(.SEG,YSCLARR("LAB_COLLECTION DATE"),14)
 ; create OBX segment for ANC
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)  ;"OBX|4|..."
 . N SEGSEQ S SEGSEQ=4
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1)  ; sequence ID
 . D SET^HLOAPI(.SEG,"CE",2)   ; value type
 . D SET^HLOAPI(.SEG,"ANC",3,2) ; observation ID    ;???PVZ should it come form LABSTR  e.g.   "ABS NEUT"
 . D SET^HLOAPI(.SEG,YSCLARR("LAB_ANC VAL"),5)
 . D SET^HLOAPI(.SEG,"F",11) ; observation result status -  "F" means Final Results 
 . ;ajf ; Don't set date if ANC value is null
 . I $G(YSCLARR("LAB_ANC VAL")) D SET^HLOAPI(.SEG,YSCLARR("LAB_COLLECTION DATE"),14)
 ;
 ; create OBX segment for site DEA number
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)  ;"OBX|5|..."
 . N SEGSEQ S SEGSEQ=5
 . N SITEDEA S SITEDEA=$$GET1^DIQ(4,YSCLARR("PROVIDER_DEFAULT DIV."),52)
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1)  ; sequence ID
 . D SET^HLOAPI(.SEG,"CE",2)  ; value type
 . D SET^HLOAPI(.SEG,"Facility DEA number",3,2)  ; observation ID
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_SITE DEA"),5)  ; facility DEA number
 . D SET^HLOAPI(.SEG,"F",11)  ; observation result status - "F" means Final
 ;
 D  Q:'$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)  ;"OBX|6|..."
 . N SEGSEQ S SEGSEQ=6
 . D SET^HLOAPI(.SEG,"OBX",0)
 . D SET^HLOAPI(.SEG,SEGSEQ,1) ; sequence id
 . D SET^HLOAPI(.SEG,"CE",2)   ; value type
 . D SET^HLOAPI(.SEG,"SITELOC",3,2) ; observation ID
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_ID"),5) ; site ID (division)
 . D SET^HLOAPI(.SEG,"F",11)  ; observation result status - "F" means Final
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_SITE NAME"),23)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_STATION"),23,10)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_STREET ADDR 1"),24,1)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_STREET ADDR 2"),24,2)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_CITY"),24,3)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_STATE"),24,4)
 . D SET^HLOAPI(.SEG,YSCLARR("SITE_ZIP"),24,5)
 ;
 S APPARMS("SENDING APPLICATION")="YSCL-REG-SEND"
 S APPARMS("ACCEPT ACK TYPE")="AL"
 S APPARMS("APP ACK TYPE")="NE"
 S APPARMS("ACCEPT ACK RESPONSE")="COMTRESP^YSCLHLAD"  ; temporary to see how COMMIT ack works
 S APPARMS("APP ACK RESPONSE")="APPRESP^YSCLHLAD"  ; temporary to see how APP ack works
 S YSCLDEST="YSCL-REG-REC"
 S YSWHTO("RECEIVING APPLICATION")=YSCLDEST
 S YSWHTO("FACILITY LINK NAME")="YSCL-NCCC"
 S HL7RES=$$SENDONE^HLOAPI1(.HLMSTATE,.APPARMS,.YSWHTO,.YSHLERR)
 I 'HL7RES D APPERROR^%ZTER("HLO error sending ClozMod ADT^AD8")  ; log error (D ^XTER) and continue
 ; leave code for future developers
 ;D:'$G(YSILENT)
 ;. W:HL7RES !,"ADT A05 message IEN=",HL7RES," generated and sent to ",YSCLDEST,!
 ;. W:'HL7RES !,"Error: ",$G(YSHLERR),!,"      No ADT A05 message sent!"
 ;
 Q HL7RES
 ;
COMTRESP ; process COMMIT ACCEPT ACK RESPONSE   
 ;
 D DT^DICRW N HDR,MSG,RES,RTNOW,YSXTMP
 S YSXTMP("1stNode")=$T(+0)_" "_DT  ; first storage node in ^XTMP
 S RES=$$STARTMSG^HLOPRS(.MSG,HLMSGIEN,.HDR)
 S RTNOW=$$NOW^XLFDT
 S ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$J,"MSGIEN")=$G(HLMSGIEN)
 S ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$J,"RES")=RES
 M ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$J,"MSG")=MSG
 M ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$J,"HDR")=HDR
 ; expires in 30 days
 S ^XTMP(YSXTMP("1stNode"),0)=$$HTFM^XLFDT($H+30)_U_DT_U_"YSCL* HL7 RESPONSE"
 Q
 ;
APPRESP ; process ACCEPT ACK RESPONSE   
 ;
 N MSGIEN,RTNOW,VAR,YSXTMP
 S YSXTMP("1stNode")=$T(+0)_" "_DT  ; first storage node in ^XTMP
 S RTNOW=$$NOW^XLFDT,MSGIEN=+$G(HLMSGIEN)
 S ^XTMP(YSXTMP("1stNode"),"APPRESP",RTNOW,MSGIEN,$J)="APP ACK RESPONSE"
 S VAR="HL" F  S VAR=$O(@VAR) Q:'($E(VAR,1,2)="HL")  M ^XTMP(YSXTMP("1stNode"),"APPRESP",RTNOW,MSGIEN,$J,VAR)=@VAR
 ; expires in 30 days
 S ^XTMP(YSXTMP("1stNode"),0)=$$HTFM^XLFDT($H+30)_U_DT_U_"YSCL* HL7 RESPONSE"
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYSCLHLAD   7500     printed  Sep 23, 2025@19:49:44                                                                                                                                                                                                    Page 2
YSCLHLAD  ;DSS/PO-CLOZAPINE DATA TRANSMISSION-Messaging-ADT ;19 May 2020 14:13:48
 +1       ;;5.01;MENTAL HEALTH;**149**;Dec 30, 1994;Build 72
 +2        QUIT 
 +3       ;
 +4       ; Reference to ^%ZTER supported by DBIA #1621
 +5       ; Reference to ^DICRW supported by DBIA #10005
 +6       ; Reference to ^DIQ supported by DBIA #2056
 +7       ; References to ^HLOAPI supported by DBIA #4716
 +8       ; References to HLOAPI1 supported by DBIA #4717
 +9       ;
ADTA28(YSCLARR,YSILENT) ; Build and send registration message
 +1       ; input:   YSCLARR   data array to build HL7 segments
 +2       ;
 +3       ; APPARMS - HLO application parameters
 +4       ; HL - delimiters for HL7 utilities
 +5       ; HL7RES - Hl7 send result, 0 if message not sent
 +6       ; HLMSTATE - message state for HLO
 +7       ; SEG - segment for HLO
 +8       ; YSCLDEST - destination name for HLO
 +9       ; YSHLERR - message creation error
 +10      ; YSWHTO - destination for HLO
 +11      ;
 +12       NEW APPARMS,HL,HL7RES,HLMSTATE,SEG,YSCLDEST,YSHLERR,YSWHTO
 +13      ;
 +14      ; create message
 +15       SET APPARMS("MESSAGE TYPE")="ADT"
 +16       SET APPARMS("EVENT")="A28"
 +17       SET APPARMS("MESSAGE STRUCTURE")="ADT_A05"
 +18       SET APPARMS("VERSION")="2.5.1"
 +19       IF '$$NEWMSG^HLOAPI(.APPARMS,.HLMSTATE,.YSHLERR)
               USE IO
               WRITE !,$GET(YSHLERR)
               QUIT 
 +20      ;
 +21      ; create EVN segment
 +22       DO SET^HLOAPI(.SEG,"EVN",0)
 +23       DO SET^HLOAPI(.SEG,$$FMTHL7^XLFDT($$NOW^XLFDT),2)
 +24       if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +25      ;
 +26      ;creat PID segment
           DO PID^YSCLHLPD(.SEG,.YSCLARR)
 +27       if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +28      ;
 +29      ; create ROL segment
 +30       DO SET^HLOAPI(.SEG,"ROL",0)
 +31      ; update
           DO SET^HLOAPI(.SEG,"UP",2)
 +32       DO SET^HLOAPI(.SEG,"PRX",3)
 +33       DO SET^HLOAPI(.SEG,"HL70443",3,3)
 +34       DO SET^HLOAPI(.SEG,"Prescribing Physician",3,2)
 +35      ;
 +36       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_DEA"),4,1,1,1)
 +37       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_LAST NAME"),4,2,1,1)
 +38       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_FIRST NAME"),4,3,1,1)
 +39       DO SET^HLOAPI(.SEG,"DEA",4,13,1,1)
 +40      ;
 +41       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_NPI"),4,1,1,2)
 +42       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_LAST NAME"),4,2,1,2)
 +43       DO SET^HLOAPI(.SEG,YSCLARR("PROVIDER_FIRST NAME"),4,3,1,2)
 +44       DO SET^HLOAPI(.SEG,"NPI",4,13,1,2)
 +45      ; "ROL" segment
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +46      ;
 +47      ; create PV1 segment
 +48       DO SET^HLOAPI(.SEG,"PV1",0)
 +49       DO SET^HLOAPI(.SEG,YSCLARR("PATIENT_INPAT/OUTPAT"),2)
 +50      ; "PV1" segment
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +51      ;
 +52      ; create OBX segment for clozapine status
 +53      ;"OBX|1|..."
           Begin DoDot:1
 +54           NEW SEGSEQ
               SET SEGSEQ=1
 +55           DO SET^HLOAPI(.SEG,"OBX",0)
 +56      ; sequence id
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +57      ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +58      ; observation ID
               DO SET^HLOAPI(.SEG,"PTSTAT",3,2)
 +59      ; patient status
               DO SET^HLOAPI(.SEG,YSCLARR("PATIENT_CLOZ STATUS"),5)
 +60      ; observation result status -  "F" means Final Results   
               DO SET^HLOAPI(.SEG,"F",11)
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +61      ;
 +62      ; create OBX segment for dispense frequency
 +63      ;"OBX|2|..."
           Begin DoDot:1
 +64           NEW SEGSEQ
               SET SEGSEQ=2
 +65           DO SET^HLOAPI(.SEG,"OBX",0)
 +66      ; sequence id
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +67      ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +68      ; observation ID
               DO SET^HLOAPI(.SEG,"DISPENSE FREQUENCY",3,2)
 +69      ;   
               DO SET^HLOAPI(.SEG,YSCLARR("LAB_FREQ"),5)
 +70      ; observation result status, "F" means Final Results 
               DO SET^HLOAPI(.SEG,"F",11)
 +71           QUIT 
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +72      ;
 +73      ; create OBX segment for WBC
 +74      ;"OBX|3|..."
           Begin DoDot:1
 +75           NEW SEGSEQ
               SET SEGSEQ=3
 +76           DO SET^HLOAPI(.SEG,"OBX",0)
 +77      ; sequence ID
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +78      ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +79      ; observation ID
               DO SET^HLOAPI(.SEG,"WBC",3,2)
 +80      ; WBC  value
               DO SET^HLOAPI(.SEG,YSCLARR("LAB_WBC VAL"),5)
 +81      ; observation result status, "F" means Final Results 
               DO SET^HLOAPI(.SEG,"F",11)
 +82      ;ajf ; Don't set date if wbc value is null
 +83           IF $GET(YSCLARR("LAB_WBC VAL"))
                   DO SET^HLOAPI(.SEG,YSCLARR("LAB_COLLECTION DATE"),14)
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +84      ; create OBX segment for ANC
 +85      ;"OBX|4|..."
           Begin DoDot:1
 +86           NEW SEGSEQ
               SET SEGSEQ=4
 +87           DO SET^HLOAPI(.SEG,"OBX",0)
 +88      ; sequence ID
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +89      ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +90      ; observation ID    ;???PVZ should it come form LABSTR  e.g.   "ABS NEUT"
               DO SET^HLOAPI(.SEG,"ANC",3,2)
 +91           DO SET^HLOAPI(.SEG,YSCLARR("LAB_ANC VAL"),5)
 +92      ; observation result status -  "F" means Final Results 
               DO SET^HLOAPI(.SEG,"F",11)
 +93      ;ajf ; Don't set date if ANC value is null
 +94           IF $GET(YSCLARR("LAB_ANC VAL"))
                   DO SET^HLOAPI(.SEG,YSCLARR("LAB_COLLECTION DATE"),14)
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +95      ;
 +96      ; create OBX segment for site DEA number
 +97      ;"OBX|5|..."
           Begin DoDot:1
 +98           NEW SEGSEQ
               SET SEGSEQ=5
 +99           NEW SITEDEA
               SET SITEDEA=$$GET1^DIQ(4,YSCLARR("PROVIDER_DEFAULT DIV."),52)
 +100          DO SET^HLOAPI(.SEG,"OBX",0)
 +101     ; sequence ID
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +102     ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +103     ; observation ID
               DO SET^HLOAPI(.SEG,"Facility DEA number",3,2)
 +104     ; facility DEA number
               DO SET^HLOAPI(.SEG,YSCLARR("SITE_SITE DEA"),5)
 +105     ; observation result status - "F" means Final
               DO SET^HLOAPI(.SEG,"F",11)
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +106     ;
 +107     ;"OBX|6|..."
           Begin DoDot:1
 +108          NEW SEGSEQ
               SET SEGSEQ=6
 +109          DO SET^HLOAPI(.SEG,"OBX",0)
 +110     ; sequence id
               DO SET^HLOAPI(.SEG,SEGSEQ,1)
 +111     ; value type
               DO SET^HLOAPI(.SEG,"CE",2)
 +112     ; observation ID
               DO SET^HLOAPI(.SEG,"SITELOC",3,2)
 +113     ; site ID (division)
               DO SET^HLOAPI(.SEG,YSCLARR("SITE_ID"),5)
 +114     ; observation result status - "F" means Final
               DO SET^HLOAPI(.SEG,"F",11)
 +115          DO SET^HLOAPI(.SEG,YSCLARR("SITE_SITE NAME"),23)
 +116          DO SET^HLOAPI(.SEG,YSCLARR("SITE_STATION"),23,10)
 +117          DO SET^HLOAPI(.SEG,YSCLARR("SITE_STREET ADDR 1"),24,1)
 +118          DO SET^HLOAPI(.SEG,YSCLARR("SITE_STREET ADDR 2"),24,2)
 +119          DO SET^HLOAPI(.SEG,YSCLARR("SITE_CITY"),24,3)
 +120          DO SET^HLOAPI(.SEG,YSCLARR("SITE_STATE"),24,4)
 +121          DO SET^HLOAPI(.SEG,YSCLARR("SITE_ZIP"),24,5)
           End DoDot:1
           if '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
               QUIT 
 +122     ;
 +123      SET APPARMS("SENDING APPLICATION")="YSCL-REG-SEND"
 +124      SET APPARMS("ACCEPT ACK TYPE")="AL"
 +125      SET APPARMS("APP ACK TYPE")="NE"
 +126     ; temporary to see how COMMIT ack works
           SET APPARMS("ACCEPT ACK RESPONSE")="COMTRESP^YSCLHLAD"
 +127     ; temporary to see how APP ack works
           SET APPARMS("APP ACK RESPONSE")="APPRESP^YSCLHLAD"
 +128      SET YSCLDEST="YSCL-REG-REC"
 +129      SET YSWHTO("RECEIVING APPLICATION")=YSCLDEST
 +130      SET YSWHTO("FACILITY LINK NAME")="YSCL-NCCC"
 +131      SET HL7RES=$$SENDONE^HLOAPI1(.HLMSTATE,.APPARMS,.YSWHTO,.YSHLERR)
 +132     ; log error (D ^XTER) and continue
           IF 'HL7RES
               DO APPERROR^%ZTER("HLO error sending ClozMod ADT^AD8")
 +133     ; leave code for future developers
 +134     ;D:'$G(YSILENT)
 +135     ;. W:HL7RES !,"ADT A05 message IEN=",HL7RES," generated and sent to ",YSCLDEST,!
 +136     ;. W:'HL7RES !,"Error: ",$G(YSHLERR),!,"      No ADT A05 message sent!"
 +137     ;
 +138      QUIT HL7RES
 +139     ;
COMTRESP  ; process COMMIT ACCEPT ACK RESPONSE   
 +1       ;
 +2        DO DT^DICRW
           NEW HDR,MSG,RES,RTNOW,YSXTMP
 +3       ; first storage node in ^XTMP
           SET YSXTMP("1stNode")=$TEXT(+0)_" "_DT
 +4        SET RES=$$STARTMSG^HLOPRS(.MSG,HLMSGIEN,.HDR)
 +5        SET RTNOW=$$NOW^XLFDT
 +6        SET ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$JOB,"MSGIEN")=$GET(HLMSGIEN)
 +7        SET ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$JOB,"RES")=RES
 +8        MERGE ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$JOB,"MSG")=MSG
 +9        MERGE ^XTMP(YSXTMP("1stNode"),"COMTRESP",RTNOW,$JOB,"HDR")=HDR
 +10      ; expires in 30 days
 +11       SET ^XTMP(YSXTMP("1stNode"),0)=$$HTFM^XLFDT($HOROLOG+30)_U_DT_U_"YSCL* HL7 RESPONSE"
 +12       QUIT 
 +13      ;
APPRESP   ; process ACCEPT ACK RESPONSE   
 +1       ;
 +2        NEW MSGIEN,RTNOW,VAR,YSXTMP
 +3       ; first storage node in ^XTMP
           SET YSXTMP("1stNode")=$TEXT(+0)_" "_DT
 +4        SET RTNOW=$$NOW^XLFDT
           SET MSGIEN=+$GET(HLMSGIEN)
 +5        SET ^XTMP(YSXTMP("1stNode"),"APPRESP",RTNOW,MSGIEN,$JOB)="APP ACK RESPONSE"
 +6        SET VAR="HL"
           FOR 
               SET VAR=$ORDER(@VAR)
               if '($EXTRACT(VAR,1,2)="HL")
                   QUIT 
               MERGE ^XTMP(YSXTMP("1stNode"),"APPRESP",RTNOW,MSGIEN,$JOB,VAR)=@VAR
 +7       ; expires in 30 days
 +8        SET ^XTMP(YSXTMP("1stNode"),0)=$$HTFM^XLFDT($HOROLOG+30)_U_DT_U_"YSCL* HL7 RESPONSE"
 +9        QUIT 
 +10      ;